mysql - 如何使用逗号分隔值的交集进行选择?

标签 mysql sql

我有一列包含逗号分隔的值。

1,2,3
4,6,7
2,3,8
12234,5467,232445,232455,11223

根据给定的数组标准(例如,1,4,9),

如何选择值包含任何给定值的行?

我的意思是当我得到1,4,9时,我需要选择

1,2,3 -- has 1
4,6,7 -- has 4

更新

我有一个表,其中有一列其他实体主键的逗号分隔值。 我明白最初的表格设计者这样做的原因。 其他实体实际上驻留在其他数据库中,这意味着不可连接。或者他或她只是想这样做。

学生表

id     name     classes
---------------------------
1      John     1,2,3
2      Jane     2,8,233423423

标准

使用给定的逗号分隔类(class)编号,查找就读其中任何类(class)的学生。

given: 1           -> select John
given: 233423423   -> select Jane
given: 1,233423423 -> select Both

最佳答案

您可以使用正则表达式的动态模板。例如:

SET @Criteria='1,4,9';
SELECT `name` 
FROM STUDENT 
WHERE STUDENT.classes REGEXP concat('(^|,)(', REPLACE(@Criteria, ',', '|'), ')(,|$)');

关于mysql - 如何使用逗号分隔值的交集进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43774451/

相关文章:

mysql - 使用更新和连接时未知列,即使该列存在

mysql - 计算数百万行的不同值——适合 NoSQL 吗?

mysql - 使用子查询的结果更新子查询中也引用的表

SQL创建数据库时授予其他用户db_owner

sql - Play 2.4 - 在日志中显示 Ebeans SQL 语句

php - 使用 MySQL 和 PHP 在多个表中搜索

mysql - 将函数绑定(bind)到 MySQL 中的列

php - 我的数据未显示在phpmyadmin db中

php - MySQL 加入 PHP PDO 作为子对象

mysql - 最多可以有两个值的属性的列命名