本文将介绍 ByteHouse 中 JSONB 数据类型的语法和使用方法。
JSONB 数据类型用于储存 Binary 格式的数据,支持高效查询和索引,相比文本格式 JSON 具有更高的处理性能,适用于存储半结构化数据(如用户行为日志、配置信息等)。
CREATE TABLE t_jsonb { id INT, data JSONB } ENGINE = CnchMergeTree ORDER BY tuple();
ByteHouse 支持提取 JSONB、String、Int64、Float64、Bool 等类型的值。类型匹配时,将返回对应类型的值,否则返回该类型对应的默认值。
提取 JSONB 类型
类型匹配时,将返回对应类型的值,否则返回该类型对应的默认值。
SELECT jsonb_extract('{"a":1, "b":2}'::JSONB, '$.a') AS a, FROM t_jsonb;
提取 String 类型
类型匹配时,将返回对应类型的值,否则返回该类型对应的默认值空字符串。
SELECT jsonb_extract_string('{"a":"test", "b":2}'::JSONB, '$.a') AS a,b FROM t_jsonb;
提取 Int64 类型
类型匹配时,将返回对应类型的值,否则返回该类型对应的默认值 0。
SELECT jsonb_extract_int64('{"a":1, "b":2}'::JSONB, '$.a') FROM t_jsonb;
提取 Float64 类型
类型匹配时,将返回对应类型的值,否则返回该类型对应的默认值 0.0。
SELECT jsonb_extract_float64('{"a":1.0, "b":2}'::JSONB, '$.a') FROM t_jsonb;
提取 Bool 类型
类型匹配时,将返回对应类型的值,否则返回该类型对应的默认值 false。
SELECT jsonb_extract_bool('{"a":true, "b":2}'::JSONB, '$.a') FROM t_jsonb;
ByteHouse 支持合并两个 JSONB 对象,并返回合并后的 JSONB,如果两者中有重复的 key,则右边对象覆盖左边对象。
SELECT jsonb_merge_patch('{"a":true, "b":2}'::JSONB, '{"c":3}'::JSONB) FROM t_jsonb;