JSON键含短横线时调用JSON_EXTRACT报无效路径表达式错误的问询
JSON字段名含短横线引发JSON路径表达式错误的解决办法
当JSON字段名包含短横线这类特殊字符时,直接用$.字段名的格式调用JSON_EXTRACT会触发路径表达式错误,复现步骤如下:
create table tt (j1 json); insert into tt values ('{"cache-size":10}'); -- 插入操作正常执行 select JSON_EXTRACT(j1,"$.cache-size") from tt;
执行查询后报错:
ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 12.
修复方案
MySQL的JSON路径语法要求,包含短横线、空格等特殊字符的键名必须用双引号包裹,或者使用方括号加单引号的形式,两种有效写法如下:
写法一:双引号包裹特殊键名
select JSON_EXTRACT(j1, '$."cache-size"') from tt;
写法二:方括号索引语法
select JSON_EXTRACT(j1, '$["cache-size"]') from tt;
执行上述任意语句,都能正确提取出cache-size对应的值10。
内容的提问来源于stack exchange,提问作者kira
相关产品推荐
相关产品推荐

