28

最近、PostgreSQL 9.3.1 を使用して JSON 機能を活用するようにアップグレードされました。私のテーブルには、次のような構造を持つ json 型の列があります。

{
   "id": "123",
   "name": "foo",
   "emails":[
      {
        "id": "123",
        "address": "somethinghere"
      },
      {
        "id": "456",
        "address": "soemthing"
      }
   ]
} 

これは、質問のための単なるダミーデータです。

ID に基づいてメール配列内の特定のアイテムを照会することは可能ですか?
かなり:「id = 123のメールを返す)」?

4

4 に答える 4

3

この投稿に出くわし、次のようにテーブルを直接クエリできることがわかりました。

SELECT *
FROM   table_name, json_array_elements(json_column) AS data
WHERE  data->>'id' = 123;

この部分を省略すると:

json_array_elements(t.json_col->'emails')
于 2016-08-08T11:45:01.233 に答える
-1

次のように簡単に実行できます。

SELECT * FROM table WHERE emails->>'id' = '123';

IDを文字列として保存しているようですが、整数の場合は次のようにできます:

SELECT *  from table WHERE cast(emails->>'id' as integer ) = 123  ;

または、id > 10 のすべての行を取得できます

SELECT *  from table WHERE cast(emails->>'id' as integer ) > 10  ;
于 2015-05-12T13:01:11.390 に答える