IF(STRCMP(oori.account_holder, '[]'), JSON_UNQUOTE(JSON_EXTRACT(oori.account_holder, '$[]."nickName"')), '无') AS 挂账人,报错 Invalid JSON path expression. The error is around character position 2.
时间: 2024-03-06 21:48:43 浏览: 81
这个错误可能是由于 JSON 数据中缺少 "nickName" 字段或 "account_holder" 字段为空数组,导致 JSON_EXTRACT 函数无法从中提取值。
你可以尝试使用 JSON_VALID 函数验证 JSON 数据是否格式正确,例如:
```sql
SELECT JSON_VALID(oori.account_holder) FROM your_table;
```
此外,你可以使用 JSON_OBJECT 或 JSON_ARRAY 函数创建一个新的 JSON 对象或数组,这可以避免由于空值或缺少字段而导致的错误。例如:
```sql
IF(STRCMP(oori.account_holder, '[]'), JSON_UNQUOTE(JSON_EXTRACT(oori.account_holder, '$[]."nickName"')), '无') AS 挂账人,
-- 可以改写为 --
JSON_UNQUOTE(IFNULL(JSON_EXTRACT(oori.account_holder, '$[]."nickName"'), JSON_OBJECT())) AS 挂账人,
```
这个查询语句将首先使用 JSON_EXTRACT 函数从 "account_holder" 字段中提取 "nickName" 值。如果该值不存在,则使用 JSON_OBJECT 函数创建一个新的空 JSON 对象,并使用 IFNULL 函数将其作为默认值返回。最后,使用 JSON_UNQUOTE 函数消除该值周围的双引号。
希望这个新的查询语句可以帮助你解决问题。
阅读全文