在 ClickHouse 中处理 JSON 数据时,可以使用内置的 JSON 函数来解析和提取 JSON 数据。以下是一些常用的 JSON 函数和示例,帮助你从 JSON 数据中提取所需的信息。
JSONExtract
: 从 JSON 字符串中提取特定类型的值。JSONExtractString
: 从 JSON 字符串中提取字符串值。JSONExtractInt
: 从 JSON 字符串中提取整数值。JSONExtractFloat
: 从 JSON 字符串中提取浮点值。JSONExtractKeysAndValues
: 从 JSON 字符串中提取键值对。JSONExtractRaw
: 从 JSON 字符串中提取原始 JSON 子字符串。假设你有一个包含 JSON 数据的表 my_table
,表结构如下:
CREATE TABLE my_table
(
id UInt32,
json_data String
) ENGINE = MergeTree()
ORDER BY id;
表中的数据示例如下:
INSERT INTO my_table (id, json_data) VALUES
(1, '{"name": "Alice", "age": 30, "address": {"city": "Wonderland", "zip": "12345"}}'),
(2, '{"name": "Bob", "age": 25, "address": {"city": "Builderland", "zip": "67890"}}');
从 JSON 数据中提取 name
字段的值:
SELECT
id,
JSONExtractString(json_data, 'name') AS name
FROM my_table;
从 JSON 数据中提取 age
字段的值:
SELECT
id,
JSONExtractInt(json_data, 'age') AS age
FROM my_table;
从 JSON 数据中提取嵌套的 address
对象:
SELECT
id,
JSONExtractRaw(json_data, 'address') AS address
FROM my_table;
从嵌套的 address
对象中提取 city
字段的值:
SELECT
id,
JSONExtractString(JSONExtractRaw(json_data, 'address'), 'city') AS city
FROM my_table;
从 JSON 数据中提取所有键值对:
SELECT
id,
JSONExtractKeysAndValues(json_data) AS keys_and_values
FROM my_table;
领取专属 10元无门槛券
手把手带您无忧上云