我有一个MySQL JSON列,其中包含以下值:

[33173,33386,24272,33499,33526,33347]

使用JSON函数,是否可以将数组中的每个值转换为字符串?结果将是:

["33173","33386","24272","33499","33526","33347"]

我不想求助于肮脏的REPLACE()通电话.

推荐答案

如果使用MySQL 8.0,可以使用JSON_TABLE() function将数组分解为行,然后将它们转换为CHAR(),然后使用JSON_ARRAYAGG()将这些行重新分解为JSONarray.

set @j = '[33173,33386,24272,33499,33526,33347]';

select json_arrayagg(cast(i as char(5))) as j 
from json_table(@j, '$[*]' columns (i int path '$')) j;

输出:

+--------------------------------------------------------+
| j                                                      |
+--------------------------------------------------------+
| ["33173", "33386", "24272", "33499", "33526", "33347"] |
+--------------------------------------------------------+

Mysql相关问答推荐

为什么MySQL派生条件下推优化不起作用

从表中 Select 具有不同顺序的列

DJANGO 使用原始 MYSQL 查询计算记录数并在 html 模板中使用结果

为什么嵌套循环逻辑不能按预期工作

使用 presto 或 mysql 添加每个组中的缺失值

在带有 D.I 的 .NET AWS Lambda 中使用 MySql.Data

如何更新一个巨大的表的 50k 行?

for each 查询设置 MySQL @@session.time_zone 而不是 CONVERT_TZ 的缺点?

基于其列之一内的值查询模型

有人可以帮我优化这个查询吗?

使用 DISTINCT 时无法从数据库中查询所有数据

查询获取日期之间的可数匹配条目并加入它们以读取用户状态

限制正则​​表达式中多字符通配符的范围

MYSQL 或 Laravel Eloquent 如何从这个订单中统计细节

显示值为空的所有列名

MySQL函数查找两个日期之间的工作日数

用于国际和多语言目的的数据库建模

问号在 MySQL 中WHERE column = ?的意义是什么?

将sql查询的结果写入mysql中的文件

'LIKE ('%this%' OR '%that%') and something=else' 不起作用