MySQL 在 json 路径中有特殊字符

MySQL with special character in the json path

我在 mysql 中有一个列,它存储一个包含 json 个文件的列,json 的键可以包含任何 unicode 字符。我有一个查询来计算特定键的基数

SELECT COUNT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(dimensions, '$.*abc')))from `definition`

名称是 *abc,其中包含一个特殊字符 * 并在 json 路径中使用 json 的值。我可以通过 运行 select all.

确保在 mysql 数据库中有带有键 *abc 的 json 文件

那么如何查询带有特殊字符的 json 路径呢?来自 https://dev.mysql.com/doc/refman/8.0/en/string-literals.html* 不应转义。

您可以在键名中使用特殊字符,方法是用 "":

分隔它们
mysql> set @j = '{"*abc": 123}';

mysql> select json_extract(cast(@j as json), '$."*abc"') as special;
+---------+
| special |
+---------+
| 123     |
+---------+