私信  •  关注

Community neuronaut

Community neuronaut 最近创建的主题
Community neuronaut 最近回复了
7 年前
回复了 Community neuronaut 创建的主题 » 检查MySQL Where子句中枚举列的逗号分隔字符串[重复]

如果要基于松散匹配获取结果,则可以执行以下查询:

松散匹配意味着兴趣 135,151 在搜索“13,15”时也会出现。

SET @inputInterest := "13,15";

SELECT 
*
FROM userinterests
WHERE interests REGEXP REPLACE(@inputInterest,',','|');

对于给定的数据,您将得到如下输出:

| ID | user |   interests |
|----|------|-------------|
|  1 |    A |    12,13,15 |
|  2 |    B | 10,11,12,15 |
|  3 |    C |        9,13 |

SQL FIDDLE DEMO

编辑:

如果您希望得到基于至少一个兴趣的结果,那么您可以使用regex,正如@Andrew在这个答案中提到的那样:

以下是我根据他的见解修改了我的查询:

SET @inputInterest := "13,15";

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

SEE DEMO OF IT

注:

你需要更换 @inputInterest

建议:

Is storing a delimited list in a database column really that bad?