MySQL 查询 : Match comma separated value with column containing comma separted string

标签 mysql

我有一个用户表,其中包含一列(例如兴趣),以逗号分隔的兴趣 ID 作为值。 例如

user  interests
A     12,13,15
B     10,11,12,15
C     9,13
D     10,12

现在,我有一个字符串,其中逗号分隔值为“13,15”。

我想从上表中获取兴趣为 13,15 的用户,这意味着它应该返回用户 A、B 和 C,因为用户 A 包含兴趣 (13,15),用户 B 则将兴趣与 15 & 匹配用户将兴趣与 13 匹配。

当我的表中有很多用户时,SQL 是什么。

最佳答案

可以像@1000111所说的那样使用正则表达式来完成,但是使用更复杂的正则表达式。看看这个,例如:

(^|,)(13|15)(,|$)

这不会匹配 135 中的 13,或 13 中的 1 等等。例如,对于数字 13,这将匹配接下来的字符串:

1,13,2
13,1,2
1,13
13,2
13

但不会匹配这些

1,135,2
131,2
1,113

这是查询:

SET @search = '13,15';

SELECT *
FROM test
WHERE interests REGEXP CONCAT('(^|,)(', REPLACE(@search, ',', '|'), ')(,|$)')

关于MySQL 查询 : Match comma separated value with column containing comma separted string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883163/

相关文章:

mysql - 安全地取消 MySQL 导入

MySQL 用其他表的多个结果构造一个结果

mysql - IN/ALL/ANY 子查询 where 子句中的未知列

Mysql:回滚多个查询

mysql - SQL 错误 - 不正确的表定义;只能有一个自动列

python - 在 Python 客户端程序中保护 MySQL 登录数据

Mysql删除重复的记录,除了一个有最大时间

MYSQL 问题 - 连接不够

mysql - 从外部删除mysql中的表

php - 只需将此日期转换为正确的格式