56

postgresql に json 型フィールドがあります。ただし、特定のフィールドが null である行を選択することはできません。

コード:

SELECT *
FROM   json_array_elements(
  '[{"name": "Toby", "occupation": "Software Engineer"},
    {"name": "Zaphod", "occupation": "Galactic President"} ,
{"name2": "Zaphod", "occupation2": null} ]'  ) AS elem
where elem#>'{occupation2}' is null

これは機能するはずですが、次のエラーが発生します。

ERROR:  operator does not exist: json #> boolean
LINE 6: where elem#>'{occupation2}' is null
4

4 に答える 4

13

json-blob 内で null 値を検索する場合はjson_typeof(json)、Postgres 9.4 で導入された関数の使用を検討することをお勧めします。

INSERT INTO table
  VALUES ('{ "value": "some", "object": {"int": 1, "nullValue": null}}');

SELECT * FROM table
  WHERE json_typeof(json->'object'->'nullValue') = 'null';

これにより、null 値のエントリが見つかります。

お役に立てれば!

参照: http://www.postgresql.org/docs/9.4/static/functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE

于 2016-01-28T14:56:34.527 に答える