# JSON 函数
JSON 函数用于操作字符串类型的数据。
# JSONExtractString
解析 JSON 并提取字符串。如果值不存在或类型错误,则返回空字符串。该值是未转义的。如果转义失败,则返回空字符串。
JSONExtractString(json[, indices_or_keys]…)
示例
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') = 'hello'
SELECT JSONExtractString('{"abc":"\\n\\u0000"}', 'abc') = '\n\0'
SELECT JSONExtractString('{"abc":"\\u263a"}', 'abc') = '☺'
SELECT JSONExtractString('{"abc":"\\u263"}', 'abc') = ''
SELECT JSONExtractString('{"abc":"hello}', 'abc') = ''
# toJSONString
将值序列化为其 JSON 表示形式。支持各种数据类型和嵌套结构。默认情况下,64 位整数或更大的整数(如 UInt64
或 Int128
)将用引号括起来。特殊值 NaN
和 inf
将被替换为 null
。在序列化枚举值时,函数输出其名称。
toJSONString(value)
参数
value
— 要序列化的值。值可以是任何数据类型。
返回值
- 值的 JSON 表示形式。
- 类型:String
示例
SELECT toJSONString(‘a:b’) = "a:b"
SELECT toJSONString(123456) = 123456
SELECT toJSONString(0x64) = 100
# JSONExtractArrayRaw
返回一个数组,其中包含 JSON 数组的元素,每个元素表示为未解析的字符串。如果部分不存在或不是数组,则返回空数组。
JSONExtractArrayRaw(json[, indices_or_keys…])
示例
SELECT JSONExtractArrayRaw('{"a": "hello", "b": [-100, 200.0, "hello"]}', 'b') = ['-100', '200', '"hello"'];
INSERT INTO ChatArXivSELECT
abstract,
id,
vector,
metadata,
parseDateTimeBestEffort(JSONExtractString(toJSONString(metadata), 'pubdate')) AS pubdate,
JSONExtractString(toJSONString(metadata), 'title') AS title,
arrayMap(x->trim(BOTH '"' FROM x),
JSONExtractArrayRaw(toJSONString(metadata), 'categories')) AS categories,
arrayMap(x->trim(BOTH '"' FROM x),
JSONExtractArrayRaw(toJSONString(metadata), 'authors')) AS authors,
JSONExtractString(toJSONString(metadata), 'comment') AS comment,
JSONExtractString(toJSONString(metadata), 'primary_category') AS primary_category
FROM s3( 'https://myscale-demo.s3.ap-southeast-1.amazonaws.com/chat_arxiv/data.part*.zst', 'JSONEachRow', 'abstract String, id String, vector Array(Float32), metadata Object(''JSON'')', 'zstd' )