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

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

mysql表就像

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


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

最佳答案

戈登是正确的。 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


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

关于mysql - 如何在mysql中将逗号分隔的字符串与逗号分隔的值相匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54478903/

10-13 02:42