http://docs.aws.amazon.com/redshift/latest/dg/json-functions.html
PostgreSQLにもJSON functionは各種存在しますが、Redshiftのそれについては関連性はなく、独自の実装に見受けられます。
◯JSON_ARRAY_LENGTH function
http://docs.aws.amazon.com/redshift/latest/dg/JSON_ARRAY_LENGTH.html
対象となる文字列がJSONのarray表現であるとして、そのarrayの長さを返却するfunctionです。
渡された文字列が空文字の場合、0が返却されます。hoge=# select json, json_array_length(json) from hoge; | 0 ["a<","b","c"] | 3
また、文字列以外の値など、JSONのparsingが行えない値を渡した場合はエラーになります。
ERROR: JSON parsing error DETAIL: ----------------------------------------------- error: JSON parsing error code: 8001 context: invalid json array object 2013-11-21 00:36:08 query: 2416921 location: funcs_json.h:81 process: query1_20 [pid=9891] -----------------------------------------------
◯JSON_EXTRACT_ARRAY_ELEMENT_TEXT function
http://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_ARRAY_ELEMENT_TEXT.html
渡されたJSON Array文字列の中から指定した要素の値を取得します。
当該要素が存在しない場合は空文字が返ります。hoge=# select json, json_extract_array_element_text(json, 0); | ["a","b","c"] | a
◯JSON_EXTRACT_PATH_TEXT function
http://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_PATH_TEXT.html
渡されたJSON文字列の中から、指定したkeyに合致するvalue値を取得します。
該当するkeyが存在しない場合は空文字が返ります。hoge=# select json, json_extract_path_text(json, 'a') | {"a":1, "b":2, "c": 3} | 1
また、{"a": {"b":{"c" :3} } } のようにネスト構造のjsonから"a.b.c"のvalueを取得したい場合は、 json_extract_path_text(json, 'a', 'b', 'c') という風に書くことで取得できます。
0 件のコメント:
コメントを投稿