mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 03:12:43 +00:00
144 lines
5.0 KiB
Plaintext
144 lines
5.0 KiB
Plaintext
-- { echo }
|
|
SELECT '--JSON_VALUE--';
|
|
--JSON_VALUE--
|
|
SELECT JSON_VALUE('{"hello":1}', '$'); -- root is a complex object => default value (empty string)
|
|
|
|
SELECT JSON_VALUE('{"hello":1}', '$.hello');
|
|
1
|
|
SELECT JSON_VALUE('{"hello":1.2}', '$.hello');
|
|
1.2
|
|
SELECT JSON_VALUE('{"hello":true}', '$.hello');
|
|
true
|
|
SELECT JSON_VALUE('{"hello":"world"}', '$.hello');
|
|
world
|
|
SELECT JSON_VALUE('{"hello":null}', '$.hello');
|
|
null
|
|
SELECT JSON_VALUE('{"hello":["world","world2"]}', '$.hello');
|
|
|
|
SELECT JSON_VALUE('{"hello":{"world":"!"}}', '$.hello');
|
|
|
|
SELECT JSON_VALUE('{hello:world}', '$.hello'); -- invalid json => default value (empty string)
|
|
|
|
SELECT JSON_VALUE('', '$.hello');
|
|
|
|
SELECT JSON_VALUE('{"foo foo":"bar"}', '$."foo foo"');
|
|
bar
|
|
SELECT JSON_VALUE('{"hello":"\\uD83C\\uDF3A \\uD83C\\uDF38 \\uD83C\\uDF37 Hello, World \\uD83C\\uDF37 \\uD83C\\uDF38 \\uD83C\\uDF3A"}', '$.hello');
|
|
🌺 🌸 🌷 Hello, World 🌷 🌸 🌺
|
|
SELECT JSON_VALUE('{"a":"Hello \\"World\\" \\\\"}', '$.a');
|
|
Hello "World" \\
|
|
select JSON_VALUE('{"a":"\\n\\u0000"}', '$.a');
|
|
\n\0
|
|
select JSON_VALUE('{"a":"\\u263a"}', '$.a');
|
|
☺
|
|
select JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
|
|
\N
|
|
select JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
|
{"world":"!"}
|
|
SELECT JSON_VALUE('{"hello":["world","world2"]}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
|
["world","world2"]
|
|
SELECT JSON_VALUE('{"1key":1}', '$.1key');
|
|
1
|
|
SELECT JSON_VALUE('{"hello":1}', '$[hello]');
|
|
1
|
|
SELECT JSON_VALUE('{"hello":1}', '$["hello"]');
|
|
1
|
|
SELECT JSON_VALUE('{"hello":1}', '$[\'hello\']');
|
|
1
|
|
SELECT JSON_VALUE('{"hello 1":1}', '$["hello 1"]');
|
|
1
|
|
SELECT JSON_VALUE('{"1key":1}', '$..1key'); -- { serverError 36 }
|
|
SELECT JSON_VALUE('{"1key":1}', '$1key'); -- { serverError 36 }
|
|
SELECT JSON_VALUE('{"1key":1}', '$key'); -- { serverError 36 }
|
|
SELECT JSON_VALUE('{"1key":1}', '$.[key]'); -- { serverError 36 }
|
|
SELECT '--JSON_QUERY--';
|
|
--JSON_QUERY--
|
|
SELECT JSON_QUERY('{"hello":1}', '$');
|
|
[{"hello":1}]
|
|
SELECT JSON_QUERY('{"hello":1}', '$.hello');
|
|
[1]
|
|
SELECT JSON_QUERY('{"hello":1.2}', '$.hello');
|
|
[1.2]
|
|
SELECT JSON_QUERY('{"hello":true}', '$.hello');
|
|
[true]
|
|
SELECT JSON_QUERY('{"hello":"world"}', '$.hello');
|
|
["world"]
|
|
SELECT JSON_QUERY('{"hello":null}', '$.hello');
|
|
[null]
|
|
SELECT JSON_QUERY('{"hello":["world","world2"]}', '$.hello');
|
|
[["world","world2"]]
|
|
SELECT JSON_QUERY('{"hello":{"world":"!"}}', '$.hello');
|
|
[{"world":"!"}]
|
|
SELECT JSON_QUERY( '{hello:{"world":"!"}}}', '$.hello'); -- invalid json => default value (empty string)
|
|
|
|
SELECT JSON_QUERY('', '$.hello');
|
|
|
|
SELECT JSON_QUERY('{"array":[[0, 1, 2, 3, 4, 5], [0, -1, -2, -3, -4, -5]]}', '$.array[*][0 to 2, 4]');
|
|
[0, 1, 4, 0, -1, -4]
|
|
SELECT JSON_QUERY('{"1key":1}', '$.1key');
|
|
[1]
|
|
SELECT JSON_QUERY('{"123":1}', '$.123');
|
|
[1]
|
|
SELECT JSON_QUERY('{"123":1}', '$[123]');
|
|
|
|
SELECT JSON_QUERY('{"hello":1}', '$[hello]');
|
|
[1]
|
|
SELECT JSON_QUERY('{"hello":1}', '$["hello"]');
|
|
[1]
|
|
SELECT JSON_QUERY('{"hello":1}', '$[\'hello\']');
|
|
[1]
|
|
SELECT JSON_QUERY('{"hello 1":1}', '$["hello 1"]');
|
|
[1]
|
|
SELECT JSON_QUERY('{"1key":1}', '$..1key'); -- { serverError 36 }
|
|
SELECT JSON_QUERY('{"1key":1}', '$1key'); -- { serverError 36 }
|
|
SELECT JSON_QUERY('{"1key":1}', '$key'); -- { serverError 36 }
|
|
SELECT JSON_QUERY('{"1key":1}', '$.[key]'); -- { serverError 36 }
|
|
SELECT '--JSON_EXISTS--';
|
|
--JSON_EXISTS--
|
|
SELECT JSON_EXISTS('{"hello":1}', '$');
|
|
1
|
|
SELECT JSON_EXISTS('', '$');
|
|
0
|
|
SELECT JSON_EXISTS('{}', '$');
|
|
1
|
|
SELECT JSON_EXISTS('{"hello":1}', '$.hello');
|
|
1
|
|
SELECT JSON_EXISTS('{"hello":1,"world":2}', '$.world');
|
|
1
|
|
SELECT JSON_EXISTS('{"hello":{"world":1}}', '$.world');
|
|
0
|
|
SELECT JSON_EXISTS('{"hello":{"world":1}}', '$.hello.world');
|
|
1
|
|
SELECT JSON_EXISTS('{hello:world}', '$.hello'); -- invalid json => default value (zero integer)
|
|
0
|
|
SELECT JSON_EXISTS('', '$.hello');
|
|
0
|
|
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[*]');
|
|
1
|
|
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[0]');
|
|
1
|
|
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[1]');
|
|
0
|
|
SELECT JSON_EXISTS('{"a":[{"b":1},{"c":2}]}', '$.a[*].b');
|
|
1
|
|
SELECT JSON_EXISTS('{"a":[{"b":1},{"c":2}]}', '$.a[*].f');
|
|
0
|
|
SELECT JSON_EXISTS('{"a":[[{"b":1}, {"g":1}],[{"h":1},{"y":1}]]}', '$.a[*][0].h');
|
|
1
|
|
SELECT '--MANY ROWS--';
|
|
--MANY ROWS--
|
|
DROP TABLE IF EXISTS 01889_sql_json;
|
|
CREATE TABLE 01889_sql_json (id UInt8, json String) ENGINE = MergeTree ORDER BY id;
|
|
INSERT INTO 01889_sql_json(id, json) VALUES(0, '{"name":"Ivan","surname":"Ivanov","friends":["Vasily","Kostya","Artyom"]}');
|
|
INSERT INTO 01889_sql_json(id, json) VALUES(1, '{"name":"Katya","surname":"Baltica","friends":["Tihon","Ernest","Innokentiy"]}');
|
|
INSERT INTO 01889_sql_json(id, json) VALUES(2, '{"name":"Vitali","surname":"Brown","friends":["Katya","Anatoliy","Ivan","Oleg"]}');
|
|
SELECT id, JSON_QUERY(json, '$.friends[0 to 2]') FROM 01889_sql_json ORDER BY id;
|
|
0 ["Vasily", "Kostya"]
|
|
1 ["Tihon", "Ernest"]
|
|
2 ["Katya", "Anatoliy"]
|
|
SELECT id, JSON_VALUE(json, '$.friends[0]') FROM 01889_sql_json ORDER BY id;
|
|
0 Vasily
|
|
1 Tihon
|
|
2 Katya
|
|
DROP TABLE 01889_sql_json;
|