【问题标题】:How to match comma seprated string with comma seprated value in mysql?如何在mysql中将逗号分隔的字符串与逗号分隔的值匹配?
【发布时间】:2019-02-01 11:49:09
【问题描述】:

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

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

Mysql 表是这样的

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

我想获取数据列中包含 -c-,-p-,-h- 的行。

【问题讨论】:

标签: mysql


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多