最近一个上线的项目突然出现一个问题,有一条sql语句出现问题,报错如下。
Invalid JSON text in argument 1 to function json_extract: "The document is empty." at position 0.
查找出来sql语句主要报错位置应该是这个条件。
where JSON_EXTRACT(item_Status,'$."11e9-1888-4e8e2c8c-871b-75b247f8aadb"')='0'
看了下数据库,发现确实有些记录的该字段为空。后来查了下官方文档,发现可以用JSON_VALID来确保该字段包含JSON,这样就可以防止此错误,修改后的sql如下。
where CASE WHEN JSON_VALID(item_Status) THEN JSON_EXTRACT(item_Status,'$."11e9-1888-4e8e2c8c-871b-75b247f8aadb"')='0' ELSE null END