-- { 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_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_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;