sql >> Databáze >  >> RDS >> PostgreSQL

Jak získat přístup ke sloupci HSTORE pomocí knihovny PostgreSQL C (libpq)?

libpqtypes zdá se, že má nějakou podporu pro hstore .

Další možností je vyhnout se přímé interakci s hstore ve vašem kódu. Stále z něj můžete těžit v databázi, aniž byste museli řešit jeho textovou reprezentaci na straně klienta. Řekněme, že chcete načíst pole hstore; stačí použít:

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

nebo na starých verzích PostgreSQL můžete použít svérázný a nestandardní formulář funkce vracení set-returning-function-in-SELECT:

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

(ale pozor, pokud vybíráte více záznamů z t tímto způsobem získáte podivné výsledky, zatímco LATERAL bude v pořádku).

Další možností je použít hstore_to_array nebo hstore_to_matrix při dotazování, pokud vám vyhovuje reprezentace pole PostgreSQL.

Chcete-li vytvořit hodnoty hstore, můžete použít konstruktory hstore, které přebírají pole. Tato pole lze zase vytvořit pomocí array_agg přes VALUES klauzule, pokud se nechcete zabývat reprezentací pole PostgreSQL ve vašem kódu.

Všechny tyto nepořádky by měly v budoucnu zmizet, protože PostgreSQL 9.4 pravděpodobně bude mít mnohem lepší spolupráci mezi typy hstore a json, což vám umožní při interakci s hstore použít pouze reprezentaci json.




  1. Funkce SQL Row_Number() v klauzuli Where

  2. MySQL vybírá včerejší datum

  3. Vložení pole do postgresql

  4. SQLiteLog:(1) poblíž Produse:chyba syntaxe