【MySQL】JSON,MySQL中的函数
在 MySQL 中,JSON_UNQUOTE().用于去除函数。 JSON 值周围的双引号,并将其转换为普通字符串或数值。这个函数特别适用于从 JSON 从文档中提取的值,因为这些值通常包含在双引号中。
基本语法。
JSON_UNQUOTE。
(。json_value。)。json_value。
: 要去引号的 JSON 值.
示例。
假设有一个表。
users。 ,有一个字段。
data。 存储用户 JSON 数据:
CREATE。
TABLE。users。(。 id。INT。 PRIMARY。KEY。,data。JSON。)。;INSERT。INTO。users。(。 id。,data。)。VALUES。(。1.,'{ "name": "Alice", "age": 30, "city": "New York"}')。,(。2.,'{ "name": "Bob", "age": 25, "city": "Los Angeles"}')。;示例 1: 去除提取的字符串值的双引号。
SELECT。
id。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.name')。)。AS。name。FROM。users。;#xff1输出结果a;
+----+--------+| id | name |+----+--------+| 1 | Alice || 2 | Bob |+----+--------+
示例 2: 去除提取值的双引号。
SELECT。
id。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.age')。)。AS。age。FROM。users。;#xff1输出结果a;
+----+-----+| id | age |+----+-----+| 1 | 30 || 2 | 25 |+----+-----+
示例 3: 去除嵌套值的双引号。
假设 JSON 数据包含嵌套对象:
INSERT。
INTO。users。(。 id。,data。)。VALUES。(。3。,'{ "name": "Charlie", "age": 35, "address": { "street": "123 Main St", "city": "Chicago"}}')。;我们可以提取嵌套的街道地址,删除双引号:
SELECT。
id。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.address.street')。)。AS。street。FROM。users。;#xff1输出结果a;
+----+-------------+| id | street |+----+-------------+| 1 | NULL || 2 | NULL || 3 | 123 Main St |+----+-------------+
示例 4: 去除数组中值的双引号。
假设 JSON 数据包含一个数组:
INSERT。
INTO。users。(。 id。,data。)。VALUES。(。4。,'{ "name": "David", "age": 40, "hobbies": ["reading", "traveling", "cooking"]}')。;我们可以提取数组中的第一个爱好,并删除双引号:
SELECT。
id。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.hobbies[0]')。)。AS。hobby。FROM。users。;#xff1输出结果a;
+----+----------+| id | hobby |+----+----------+| 1 | NULL || 2 | NULL || 3 | NULL || 4 | reading |+----+----------+
注意事项。
JSON_UNQUOTE()。
最外层的双引号只能去除。如果 JSON 值本身包含嵌套双引号,不会去除这些嵌套的双引号。
如果。- json_value。
不是有效的 JSON 值,
JSON_UNQUOTE()。将返回。
NULL。。
如果。 - json_value。
本身就是。
NULL。,
JSON_UNQUOTE()。也将返回。
NULL。。
组合使用。
JSON_UNQUOTE()。
通常与。
JSON_EXTRACT()。 一起使用以便从 JSON 在文档中提取值并将其转换为普通数据类型。例如:
SELECT。
id。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.name')。)。AS。name。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.age')。)。AS。age。,JSON_UNQUOTE。(。JSON_EXTRACT。(。data。,'$.address.street')。)。AS。street。FROM。users。;#xff1输出结果a;
+----+--------+-----+-------------+| id | name | age | street |+----+--------+-----+-------------+| 1 | Alice | 30 | NULL || 2 | Bob | 25 | NULL || 3 | charlie| 35 | 123 Main St || 4 | David | 40 | NULL |+----+--------+-----+-------------+
本文地址:http://cdn.baiduyun.im/video/www.bfzx365.com/news/show.php/video/625f46098914.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。