hstore本モジュールはキー、値の組み合わせの集合を単一のPostgreSQL値に格納するためのhstoreデータ型を実装します。厳密に検査されない属性を多く持つ行や半構造化データなど、多くの状況で有用になる可能性があります。キーと値は単純なテキスト文字列です。valueという組み合わせを含みます。all"組み合わせの順序は重要ではありません(出力時に再現されないこともあります)。組み合わせ間や=>記号の前後の空白文字は無視されます。キーや値が空白文字、カンマ、=、>を含む場合は二重引用符でくくります。キーや値に二重引用符やバックスラッシュを含めるには、バックスラッシュでエスケープしてください。hstore内の各キーは一意です。重複するキーを持つhstoreを宣言すると、hstoreには1つしか保存されません。どちらが残るかは保証されません。"a"=>"1"値はSQLのNULLを取ることができます(キーは不可)。NULLNULLキーワードは大文字小文字の区別をしません。nullを普通の文字列「NULL」として扱うためには二重引用符でくくってください。入力として使用される場合hstoreテキスト書式は、前もって必要な引用符付けやエスケープ処理を適用することに注意してください。パラメータとしてhstoreリテラルを渡す場合、追加処理は必要ありません。引用符付けしたリテラル定数として渡す場合には、単一引用符および(standard_conforming_strings設定パラメータに依存しますが)バックスラッシュ文字をすべて正しくエスケープしなければなりません。文字列定数の取り扱いについては4.1.2.1を参照してください。出力の場合、厳密に必要がない場合であっても、常にキーと値は二重引用符でくくられます。hstoreを連結します。hstoreがキーを含むかどうか。hstoreが指定したキーをすべて含むかどうか。hstoreが指定したキーのいずれかを含むかどうか。左辺は右辺を含むかどうか。左辺は右辺に含まれるかどうか。左辺からキーを削除します。左辺からキー(複数)を削除します。左辺から一致する組み合わせを削除します。record内のフィールドをhstoreの対応する値で置換します。キーと値を変更してhstoreを配列に変換します。hstoreをキーと値の2次元配列に変換します。8.2より前では、包含演算子@>と<@はそれぞれ@と~と呼ばれていました。これらの名前はまだ利用できますが、廃止予定であり、最終的にはなくなります。古い名前がコアの幾何データ型が従う規約と反対であることに注意してください。レコードまたは行からhstoreを生成します。配列からhstoreを生成します。キー、値で分けた配列からhstoreを作成します。hstore型の単一項目を作成します。hstoreのキーを配列として入手します。hstoreのキーを集合として入手します。hstoreの値を配列として入手します。hstoreの値を集合として入手します。hstoreのキーと値を、キーと値を交互に表した配列として入手します。hstoreのキーと値を2次元配列として入手します。非nullの値をすべてJSON文字列に変換し、hstoreをjson値として入手します。非nullの値をすべてJSON文字列に変換し、hstoreをjsonb値として入手します。hstoreをjson値として入手します。数値およびブール値を識別しようとするため、その2つはJSON中では引用符が付きません。hstoreをjsonb値として入手します。数値およびブール値を識別しようとするため、その2つはJSON中では引用符が付きません。hstoreの部分集合を取り出します。hstoreのキーと値を集合として入手します。hstoreがキーを含むかどうか。キーに一致する組み合わせを削除します。キー(複数)に対応する組み合わせを削除します。第二引数内の組み合わせと一致する組み合わせを削除します。record内のフィールドをhstoreの対応する値で置換します。注記hstore_to_json関数はhstore値をjsonにキャストする時に使われます。同様に、hstore_to_jsonb関数はhstore値をjsonbにキャストする時に使われます。注記populate_record関数の最初の引数は実際にはrecordではなくanyelementと宣言されています。実行時にはレコード型以外は拒絶されます。インデックスhstoreは@>、?、?&および?|演算子向けのGiSTおよびGINインデックスをサポートします。(h);hstoreはまた、=演算子向けにbtreeまたはhashインデックスをサポートします。BY、DISTINCTの式で使用することができます。hstore値のソート順序付けはあまり有用ではありません。これらのインデックスは同値検索の際に有用になるかもしれません。=比較用のインデックスを以下のように作成します。例キーを追加、または、既存のキーを新しい値で更新します。'3');キーを削除します。'k1');recordをhstoreに変換します。row)hstoreを事前に定義されたrecord型に変換します。row)hstoreの値を使用して既存のレコードを変更します。内在する自由度のため、hstore型は異なるキーを多く含むことができます。有効なキーを検査することはアプリケーション側の作業です。以下の例では、キー検査および統計情報の入手に関する複数の技法を示します。""=>1');テーブルを使用する例です。testhstore;オンライン統計値です。9.0からhstoreの内部表現はこれまでから変更されました。(ダンプ内で使用される)テキスト表現には変更がありませんので、ダンプ/リストアによる更新の妨げにはなりません。バイナリによる更新の際、新しいコードで古い書式のデータを認識させることにより、上位互換が保持されます。これには、新しいコードによりまだ変更されていないデータを処理する際に、性能の劣化を多少伴います。以下のようにUPDATE文を実行することによりテーブル列内のすべての値を強制的に更新することができます。'';上を行う他の方法を以下に示します。TABLEによる方法はテーブルに対して排他ロックを必要とします。古いバージョンの行でテーブルが膨張することはありません。変換PL/Perl言語やPL/Python言語向けにhstore型の変換を実装した追加の拡張が入手可能です。PL/Perl向けの拡張は、信頼されたPL/Perlに対してはhstore_plperlという名前で、信頼されないものに対してはhstore_plperluという名前です。関数を作成するときにこの変換をインストールして指定していれば、hstoreの値はPerlのハッシュにマップされます。PL/Python向けの拡張はhstore_plpythonu、hstore_plpython2u、hstore_plpython3uという名前です(PL/Pythonの命名規約については46.1を参照してください)。この拡張を使うとhstoreの値はPythonの辞書型にマップされます。Kingdomによりなされました。