MYSQL JSON 搜索 returns 结果在方括号中
MYSQL JSON search returns results in square brackets
我正在对 MySQL 数据库中保存的 JSON 进行简单搜索,但是结果 return 包含在方括号和引号中。
SELECT stored_json->>'$.*.referal' AS referal FROM table WHERE id = 100
结果
+------------+
| referal |
+------------+
| ["search"] |
+------------+
有没有办法让 MYSQL 到 return 的结果不带括号和引号?
+------------+
| referal |
+------------+
| search |
+------------+
谢谢
编辑
JSON 示例
{
"100": {
"referal": "search"
}
}
如果您只想要数组中的单个值,则提取该值并取消引用:
SELECT JSON_UNQUOTE(JSON_EXTRACT(
JSON_EXTRACT(stored_json, '$.*.referal'), '$[0]')) AS referal
FROM ...
+---------+
| referal |
+---------+
| search |
+---------+
JSON_UNQUOTE() 函数将结果转换为字符串,但是如果给它一个 JSON 数组或对象,它不能去掉括号和双引号。那些只是成为字符串的一部分。您必须从 JSON 中提取单个标量值,然后您可以使用 JSON_UNQUOTE() 删除双引号。
我想如果您的 JSON 文档中有多个值,您可能希望获得结果。
+----------------------------+
| referal |
+----------------------------+
| ["search","word of mouth"] |
+----------------------------+
抱歉,我没有找到解决此问题的方法,除了:
REPLACE(..., '[', '')
以此类推,删除其他不需要的字符。
在MySQL 8.0中,函数REGEXP_REPLACE()可以一次去除多个字符:
REGEXP_REPLACE(..., '["\[\]]', '')
我正在对 MySQL 数据库中保存的 JSON 进行简单搜索,但是结果 return 包含在方括号和引号中。
SELECT stored_json->>'$.*.referal' AS referal FROM table WHERE id = 100
结果
+------------+
| referal |
+------------+
| ["search"] |
+------------+
有没有办法让 MYSQL 到 return 的结果不带括号和引号?
+------------+
| referal |
+------------+
| search |
+------------+
谢谢
编辑
JSON 示例
{
"100": {
"referal": "search"
}
}
如果您只想要数组中的单个值,则提取该值并取消引用:
SELECT JSON_UNQUOTE(JSON_EXTRACT(
JSON_EXTRACT(stored_json, '$.*.referal'), '$[0]')) AS referal
FROM ...
+---------+
| referal |
+---------+
| search |
+---------+
JSON_UNQUOTE() 函数将结果转换为字符串,但是如果给它一个 JSON 数组或对象,它不能去掉括号和双引号。那些只是成为字符串的一部分。您必须从 JSON 中提取单个标量值,然后您可以使用 JSON_UNQUOTE() 删除双引号。
我想如果您的 JSON 文档中有多个值,您可能希望获得结果。
+----------------------------+
| referal |
+----------------------------+
| ["search","word of mouth"] |
+----------------------------+
抱歉,我没有找到解决此问题的方法,除了:
REPLACE(..., '[', '')
以此类推,删除其他不需要的字符。
在MySQL 8.0中,函数REGEXP_REPLACE()可以一次去除多个字符:
REGEXP_REPLACE(..., '["\[\]]', '')