如何在mysql中将逗号分隔的字符串与逗号分隔的值相匹配?

时间:2019-02-01 11:49:09

标签: mysql

我想选择具有逗号分隔值且列中以逗号分隔值的行。

在我使用FIND_IN_SET(needle,source)方法匹配单个值之前。

Mysql表就像

id       data 
1        -a-,-b-,-c-
2        -f-,-g-,-h-
3        -a-,-b-,-h-

我想获取在数据列中具有-c-,-p-,-h-的行。

1 个答案:

答案 0 :(得分:1)

戈登是正确的。 SQL列中以逗号分隔的值的字符串是数据库设计中的第一反模式。它需要对SQL的所有优化和完善,然后将其丢弃。通过添加另一个表来尽快修复它。

与此同时,您可以尝试

 SELECT whatever 
   FROM table
  WHERE FIND_IN_SET('-c-', data) > 0
    AND FIND_IN_SET('-p-', data) > 0
    AND FIND_IN_SET('-h-', data) > 0

以任意顺序查找包含您提到的所有三个标记的行。