メインコンテンツまでスキップ

Overview of JSON functions and operators

JSON関数とオペレーターの概要

このトピックでは、StarRocksがサポートするJSON構築関数、クエリ関数、処理関数、オペレーター、およびパス式の概要を提供します。

JSON構築関数

JSON構築関数はJSONオブジェクトやJSON配列などのJSONデータを構築するために使用されます。

関数

説明

戻り値

json_object

1つ以上のキーと値のペアをJSONオブジェクトに変換します。キーと値のペアは、キーで辞書順にソートされます。

SELECT JSON_OBJECT(' Daniel Smith', 26, 'Lily Smith', 25);

{"Daniel Smith": 26, "Lily Smith": 25}

json_array

SQL配列の各要素をJSON値に変換し、それらのJSON値からなるJSON配列を返します。

SELECT JSON_ARRAY(1, 2, 3);

[1,2,3]

parse_json

文字列をJSON値に変換します。

SELECT PARSE_JSON('{"a": 1}');

{"a": 1}

JSONクエリ関数と処理関数

JSONクエリ関数と処理関数はJSONデータのクエリと処理に使用されます。たとえば、JSONオブジェクト内の要素をパス式を使用してロケートすることができます。

関数

説明

戻り値

arrow function

パス式で指定された要素をJSONオブジェクト内でクエリします。

SELECT parse_json('{"a": {"b": 1}}') -> '$.a.b';

1

cast

JSONデータ型とSQLデータ型の間でデータを変換します。

SELECT CAST(1 AS JSON);

1

get_json_double

JSON文字列内の指定されたパスから浮動小数点値を解析して取得します。

SELECT get_json_double('{"k1":1.3, "k2":"2"}', "$.k1");

1.3

get_json_int

JSON文字列内の指定されたパスから整数値を解析して取得します。

SELECT get_json_int('{"k1":1, "k2":"2"}', "$.k1");

1

get_json_string

JSON文字列内の指定されたパスから文字列を解析して取得します。

SELECT get_json_string('{"k1":"v1", "k2":"v2"}', "$.k1");

v1

json_query

パス式で指定された要素の値をJSONオブジェクトからクエリします。

SELECT JSON_QUERY('{"a": 1}', '$.a');

1

json_each

JSONオブジェクトのトップレベル要素をキーと値のペアに展開します。

SELECT * FROM tj_test, LATERAL JSON_EACH(j);

! json_each

json_exists

JSONオブジェクトがパス式で指定された要素を含むかどうかを確認します。要素が存在する場合、この関数は1を返します。要素が存在しない場合、関数は0を返します。

SELECT JSON_EXISTS('{"a": 1}', '$.a');

1

json_keys

JSONオブジェクトのトップレベルのキーをJSON配列として返します。または、パスが指定されている場合は、パスからのトップレベルのキーを返します。

SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}');

["a", "b", "c"]

json_length

JSONドキュメントの長さを返します。

SELECT json_length('{"Name": "Alice"}');

1

json_string

JSONオブジェクトをJSON文字列に変換します。

SELECT json_string(parse_json('{"Name": "Alice"}'));

{"Name": "Alice"}

JSONオペレーター

StarRocksは以下のJSON比較演算子をサポートしています: <, <=, >, >=, =, !=。これらのオペレーターを使用してJSONデータをクエリすることができます。ただし、IN演算子を使用してJSONデータをクエリすることはできません。詳細については、JSONオペレーターを参照してください。

JSONパス式

JSONパス式を使用すると、JSONオブジェクト内の要素をクエリすることができます。JSONパス式はSTRINGデータ型です。ほとんどの場合、JSON_QUERYなどのさまざまなJSON関数と共に使用されます。StarRocksでは、JSONパス式は完全にSQL/JSONパスの仕様に準拠していません。StarRocksでサポートされているJSONパス構文については、次の表を参照してください。次のJSONオブジェクトは例として使用されます。

{
"people": [{
"name": "Daniel",
"surname": "Smith"
}, {
"name": "Lily",
"surname": "Smith",
"active": true
}]
}

JSONパス記号

説明

JSONパスの例

戻り値

$

ルートのJSONオブジェクトを示します。

'$'

{ "people": [ { "name": "Daniel", "surname": "Smith" }, { "name": "Lily", "surname": Smith, "active": true } ] }

.

子のJSONオブジェクトを示します。

' $.people'

[ { "name": "Daniel", "surname": "Smith" }, { "name": "Lily", "surname": Smith, "active": true } ]

[]

1つ以上の配列インデックスを示します。 [n] は配列内のn番目の要素を示します。インデックスは0から始まります。

StarRocks 2.5では、多次元配列のクエリをサポートしています。たとえば、["Lucy", "Daniel"], ["James", "Smith"]という配列から"Lily"要素を取得するには、$.people[0][1]を使用します。

'$.people [0]'

{ "name": "Daniel", "surname": "Smith" }

[*]

配列内のすべての要素を示します。

'$.people[*].name'

["Daniel", "Lily"]

[start: end]

配列から要素の部分集合を示します。部分集合は[start, end]の範囲で指定され、終了インデックスの要素は含まれません。

'$.people[0: 1].name'

["Daniel"]