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(..., '["\[\]]', '')