sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan får man adgang til en HSTORE-kolonne ved hjælp af PostgreSQL C-bibliotek (libpq)?

libpqtypes ser ud til at have en vis understøttelse af hstore .

En anden mulighed er at undgå direkte interaktion med hstore i din kode. Du kan stadig drage fordel af det i databasen uden at beskæftige dig med dets tekstrepræsentation på klientsiden. Sig, at du vil hente et hstore-felt; du bruger bare:

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

eller på gamle PostgreSQL-versioner kan du bruge den finurlige og ikke-standardiserede sæt-retur-funktion-i-SELECT-formular:

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

(men pas på, hvis du vælger flere poster fra t på denne måde vil du få mærkelige resultater, mens LATERAL er vil være i orden).

En anden mulighed er at bruge hstore_to_array eller hstore_to_matrix når du forespørger, hvis du er tryg ved at håndtere PostgreSQL-arrayrepræsentation.

For at oprette hstore-værdier kan du bruge hstore-konstruktørerne, der tager arrays. Disse arrays kan igen oprettes med array_agg over en VALUES klausul, hvis du ikke ønsker at håndtere PostgreSQL's array-repræsentation i din kode.

Alt dette rod burde forsvinde i fremtiden, da PostgreSQL 9.4 sandsynligvis vil have meget bedre interoperation mellem hstore- og json-typerne, så du bare kan bruge json-repræsentationen, når du interagerer med hstore.




  1. pl/sql lagret procedure:parameternavn samme som kolonnenavn

  2. Hvordan får man den sidste indgang fra MYSQL-databasen?

  3. Sender du en række værdier til en sql-forespørgsel i ruby?

  4. Opencart 2.2.0 muliggør søgning efter producent