web-dev-qa-db-ja.com

PostgresqlのHSTOREからキーを削除する

現在、さまざまなアイテムのプロパティを説明するhstoreがあります。検索するときは、各アイテムに固有の値(シリアル番号、vinなど)を削除する必要があります。 postgresqlのドキュメントによると、次の演算子を使用してhstoreからキーを削除できるはずです

Postgresのドキュメントによるとhstore - text delete key from left operand 'a=>1, b=>2, c=>3'::hstore - 'b'::text

私のコードには

IF item.details ? 'vin' THEN item.details::hstore - 'vin'::TEXT; END IF;

関数を作成しようとすると、構文エラーが発生します

'"::"またはその近くの構文エラー'

値の末尾から型宣言を削除すると、エラーが発生します

「「-」またはその近くの構文エラー」

私が見る限り、これはpostgresのドキュメントがオペレーターが http://www.postgresql.org/docs/9.3/static/hstore.html で作業する必要があると言っている方法に準拠しています。足りないものはありますか?

1
jacobsoloid

item.details::hstore - 'vin'::TEXTをPL/PgSQLステートメントとして使用しようとしています。

結果はどこに行くはずですか?

推測では、あなたが書くつもりだったのは次のとおりだと思います。

item.details := item.details - 'vin'::TEXT;

つまり、「キーvinを削除して、item.detailsをitem.detailsの古い値に設定します」。

これ以上のコンテキストがないと、確認するのは難しいです。

5
Craig Ringer