我有一个源表:
CREATE TABLE test.source
(
text_json String
)
engine = Memory;
我有一个目标表:
CREATE TABLE test.destination
(
column Nullable(Int64)
)
engine = Memory;
我插入到源:INSERT INTO test.source (text_json) FORMAT JSONAsString {"column": null};
然后,我尝试解析json int值并插入到目标中。
INSERT INTO test.destination (column)
SELECT JSONExtractInt(text_json) FROM test.source;
但是,它将插入0。这将是一个不确定的行为,就好像我有一个真正的零预先,这将是不可能区分NULL
和0。
如何将JSONString
空值解析为Int64列作为Null
发布于 2022-06-23 08:24:51
您可以使用价值提取字符串值并将其传递给插入(使用隐式或显式转换):
INSERT INTO test.destination (column)
SELECT JSON_VALUE(text_json, '$.column')
FROM test.source
结果为NULL:
SELECT * FROM test.destination
┌─column─┐
│ ᴺᵁᴸᴸ │
└────────
https://stackoverflow.com/questions/72729412
复制