MySQL中JSON路径包含特殊字符时的正确查询方法
问题原因
你原有查询语句中 $.*abc 里的*会被MySQL JSON路径解析器识别为通配符,而非*abc键名的组成部分,因此无法匹配到目标键。
正确查询写法
对于包含特殊字符的JSON键,需要用双引号将完整键名包裹后写入路径,你可以任选以下两种写法:
- 兼容原有语法的修正版:
SELECT COUNT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(dimensions, '$."*abc"'))) FROM `definition`;
- 更简洁的简化写法(
->>运算符等价于JSON_UNQUOTE(JSON_EXTRACT())组合):
SELECT COUNT(DISTINCT dimensions->>'$."*abc"') FROM `definition`;
补充说明
这种双引号包裹键名的写法适用于所有包含特殊字符(如特殊符号、空格、非ASCII字符)或与JSON路径关键字冲突的键名查询场景。
内容的提问来源于stack exchange,提问作者dashenswen
相关产品推荐
相关产品推荐

