sql >> Database >  >> RDS >> PostgreSQL

Hoe toegang krijgen tot een HSORE-kolom met behulp van de PostgreSQL C-bibliotheek (libpq)?

libpqtypes lijkt enige ondersteuning te hebben voor hstore .

Een andere optie is om directe interactie met hstore te vermijden in uw code. U kunt er nog steeds van profiteren in de database zonder de tekstrepresentatie aan de clientzijde aan te pakken. Stel dat u een hstore-veld wilt ophalen; je gebruikt gewoon:

SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);

of op oude PostgreSQL-versies kunt u het eigenzinnige en niet-standaard set-returning-function-in-SELECT-formulier gebruiken:

SELECT t.id, each(t.hstorefield) FROM thetable t;

(maar pas op als u meerdere records selecteert uit t op deze manier krijg je rare resultaten terwijl LATERAL komt goed).

Een andere optie is om hstore_to_array . te gebruiken of hstore_to_matrix bij het opvragen, als u vertrouwd bent met het omgaan met PostgreSQL-arrayweergave.

Om hstore-waarden te maken, kunt u de hstore-constructors gebruiken die arrays gebruiken. Die arrays kunnen op hun beurt worden gemaakt met array_agg over een VALUES clausule als u niet wilt omgaan met de array-representatie van PostgreSQL in uw code.

Al deze rotzooi zou in de toekomst moeten verdwijnen, aangezien PostgreSQL 9.4 waarschijnlijk een veel betere samenwerking zal hebben tussen hstore- en json-typen, waardoor u alleen de json-representatie kunt gebruiken bij interactie met hstore.




  1. vervolg selecteren en een andere tabelalias opnemen

  2. Krijg alleen het voorlaatste record - mysql-query

  3. In wachtrij plaatsen in OneWay WCF-berichten met Windows Service en SQL Server

  4. MySQL-update met selectie uit een andere tabel