当我读取JSON数据时-
查询样例:
SELECT *
FROM
JSON_TABLE(
CONCAT('[', '351615,12345678', ']'),
"$[*]"
COLUMNS(
ids BIGINT(20) PATH "$"
)
) AS tt
错误:
“在数组元素后缺少逗号或']'。”在位置2。
当我删除整数前面的
00
时,它给出了正确的结果。SELECT *
FROM
JSON_TABLE(
CONCAT('[', '351615,12345678', ']'),
"$[*]"
COLUMNS(
ids BIGINT(20) PATH "$"
)
) AS tt
输出:
351615
12345678
有人可以建议我我所缺少的吗?
最佳答案
您可以使用JSON_ARRAY
代替concat一个字符串来获取JSON数组值:
-- single value
SELECT *
FROM JSON_TABLE(
JSON_ARRAY('00351615'),
"$[*]"
COLUMNS(
ids BIGINT(20) PATH "$"
)
) AS tt
-- multiple values
SELECT *
FROM JSON_TABLE(
JSON_ARRAY('00351615', '12345678'),
"$[*]"
COLUMNS(
ids BIGINT(20) PATH "$"
)
) AS tt
...或者您使用
"
转义该值:-- single value
SELECT *
FROM JSON_TABLE(
CONCAT('[', '"00351615"', ']'),
"$[*]"
COLUMNS(
ids BIGINT(20) PATH "$"
)
) AS tt
-- multiple values
SELECT *
FROM JSON_TABLE(
CONCAT('[', '"00351615","12345678"', ']'),
"$[*]"
COLUMNS(
ids BIGINT(20) PATH "$"
)
) AS tt
您还可以使用
JSON_VALID
检查JSON值是否有效:SELECT JSON_VALID(CONCAT('[', '00351615', ']')) -- 0 (not valid)
demo on dbfiddle.uk