在MySQL中,JSON_ARRAY
函数用于创建一个JSON数组。如果你在使用 JSON_ARRAY
后发现内容没有包含双引号,这可能是因为你直接将非字符串类型的数据作为参数传递给了 JSON_ARRAY
。
JSON_ARRAY
期望的是一系列的JSON值,这些值可以是字符串、数字、true、false、null或其他JSON数组。如果传递非字符串类型的数据,MySQL会将其转换为对应的JSON类型,通常不会自动添加双引号。
例如,如果你有一个整数列 id
,你直接将其传递给 JSON_ARRAY
,你会得到类似 [1, 2, 3]
的结果,而不是 ["1", "2", "3"]
。
解决方法:
-
如果你需要得到包含双引号的JSON字符串,你应该先将非字符串类型的数据转换为字符串,可以使用
CAST
或CONCAT
函数。SELECT JSON_ARRAY(CAST(id AS CHAR)) FROM your_table;
或者
SELECT JSON_ARRAY(CONCAT('"', id, '"')) FROM your_table;
另一种方法是使用
JSON_OBJECTAGG
或其他JSON相关的函数来创建期望的JSON格式。例如,如果你想要得到类似
["id": "1"]
这样的结果,你可以这样做:SELECT JSON_OBJECTAGG('id', CAST(id AS CHAR)) FROM your_table;
确保在需要字符串的地方使用
CAST
或CONCAT
来转换数据类型,这样可以确保数据被正确地包含在双引号内。案例二、mysql json 查询结果去掉双引号 “”
方法1
select json->>'$.attr' from table;
方法2
select JSON_UNQUOTE(json_extract(json,'$.attr')) from table;