MySQL Error number: 3665; Symbol: ER_MISSING_JSON_TABLE_VALUE; SQLSTATE: 22035

文档解释

Error number: 3665; Symbol: ER_MISSING_JSON_TABLE_VALUE; SQLSTATE: 22035

Message: Missing value for JSON_TABLE column ‘%s’

错误说明

ER_MISSING_JSON_TABLE_VALUE是MySQL表示在使用JSON_TABLE函数处理JSON值时,因没有找到对应的键或对应行导致缺少值。

常见案例

示例1:如下语句声明了一个表来表示一个JSON数据,其中test_json表示一个JSON值用于填充:

CREATE TABLE test_table(

id INT,

json_doc JSON

);

INSERT INTO test_table(id, json_doc)

VALUES (1, ‘{“name”: “Mike”, “age”: 27}’);

SELECT *

FROM test_table

LEFT JOIN JSON_TABLE(json_doc, ‘$’

COLUMNS (

name VARCHAR(50) PATH ‘$.name’,

age INTEGER PATH ‘$.age’

)

)AS jt USING(json_doc);

这里的JSON_TABLE查询会返回以下错误信息:

Error Code: 3665. JSON column ‘name’ cannot be found in the value

解决方法

有几种方法可以解决ER_MISSING_JSON_TABLE_VALUE的错误:

方法1:检查JSON文档是否正确,即键和值是否存在,列表中每个数据项是否有效。

方法2:使用IFNULL或ISNULL函数可以处理NULL值,而不是ER_MISSING_JSON_TABLE_VALUE。

例如:

SELECT IFNULL(name, ‘N/A’) AS name

FROM test_table

LEFT JOIN JSON_TABLE(json_doc, ‘$’

COLUMNS (

name VARCHAR(50) PATH ‘$.name’,

age INTEGER PATH ‘$.age’

)

)AS jt USING(json_doc);

方法3:可以使用JSON_VALUE或JSON_EXTRACT函数来获取JSON值,而不是使用JSON_TABLE。

你可能感兴趣的