我是SQL新手.我正试图在WHERE in语句中传递一个列表.但这些值位于类似以下内容的字符串中:

'["id1", "id2", "id3", "id4", "id5", "id6"]'

WHERE IN语句不接受字符串,但接受它:

WHERE IN (SELECT ids FROM unnested_id_related.id_related)

我可以使用UNNEST语句获取此表

CROSS JOIN 
    unnest(ids) AS unnested_id_related (id_related)

但值ids需要是一个array.有人知道如何将字符串转换为数组吗?还是在WHERE in语句中传递此字符串的更好方法?

推荐答案

您的数据看起来像json数组,因此您可以将parse it作为一个数组并转换为字符串数组:

select cast(json_parse('["id1", "id2", "id3", "id4", "id5", "id6"]') as array(varchar))

输出:

_col0
[id1, id2, id3, id4, id5, id6]

Mysql相关问答推荐

优化使用ORDER BY加载耗时较长的MySQL请求

如何在Sequelize中将查询作为选项?

MySQL在使用SELECT*时不使用索引

根据上一行S列结果计算列的查询

Mysql - 按周分组但从 1 开始计数

如何在 SQL 中迭代所有名称和排名排列

Mysql 查询返回未定义的 node.js

如何编写一个查询,计算表中每个日期的一个日期加上前 4 天的记录数?

如何编写按天数汇总值的sql查询?

访问 nodejs、mysql 和 json 中的嵌套对象数组

MySql中的可见索引和不可见索引是什么

Laravel 查询构建器 where() 用于何时产品必须有多个标签(使用 product_tags 数据透视表多对多)

FreeBASIC 中的 MySQL 访问读取

docker-entrypoint-initdb 中的 MySQL 脚本未执行

从 MYSQL 查询中计算列的平均值

phpMyAdmin - 无法连接 - 无效设置 - 自从我添加了 root 密码 - 被锁定

为什么 GRANT 在 MySQL 中不起作用?

什么是mysql的BETWEEN性能超过..?

设计用户角色和权限系统的最佳实践?

获得上个月的第一天和最后一天的最佳方式?