当 json 名称中包含破折号时,无法使用 JSON_EXTRACT

saj*_*ari 3 mysql sql

当我使用包含破折号的字段名的 JSON 类型时,出现无效的 JSON 路径表达式错误

如何重复:

create table tt (j1 json);
insert into tt values ('{"cache-size":10}'); <-- insert went fine
select JSON_EXTRACT(j1,"$.cache-size") from tt;
Run Code Online (Sandbox Code Playgroud)

错误 3143 (42000):JSON 路径表达式无效。错误发生在字符位置 12 附近。

xra*_*ray 5

键的名称必须是双引号字符串或有效的 ECMAScript 标识符

ECMAScript 标识符中不允许使用连字符,因此需要在路径表达式中用引号引起来的名称。这似乎有效:

select JSON_EXTRACT(j1, '$."cache-size"') from tt;
Run Code Online (Sandbox Code Playgroud)
id    | JSON_EXTRACT(j1, '$."cache-size"')
------+----------  
1     | 10  
Run Code Online (Sandbox Code Playgroud)