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 |
+---------+
我在 mysql 中有一个列,它存储一个包含 json 个文件的列,json 的键可以包含任何 unicode 字符。我有一个查询来计算特定键的基数
SELECT COUNT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(dimensions, '$.*abc')))from `definition`
名称是 *abc
,其中包含一个特殊字符 *
并在 json 路径中使用 json 的值。我可以通过 运行 select all.
*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 |
+---------+