MySQL逗号分隔单个字段中的值

时间:2013-04-10 05:50:25

标签: mysql

表格中有一个字段,存储4个逗号分隔值,如此

id  | coulumname
1   | Mahendra Singh Dhoni, R Ashwin, 1 or none, None of the above
2   | Murali Vijay, R Ashwin, 2, Albie Morkel 
3   | Murali Vijay, R Ashwin, 1 or none, None of the above

现在我想查询上述列中的匹配值(不完全匹配

让我们采取这种方式“ R Ashwin,1或者没有,以上都没有”这三个值在两列(第1和第3)中匹配,如何为此编写查询,是否存在任何可能的方法只使用查询而不是编程?

3 个答案:

答案 0 :(得分:2)

那么这两行在同一顺序中具有完全相同的字符串,所以你可以做到

coulumname LIKE '%R Ashwin, 1 or none, None of the above%'

如果它们可以处于任何顺序且在开始或结束时,您可能需要正则表达式,并且将值拆分为搜索

会更容易
coulumname RLIKE '(^|,)R Ashwin(,|$)' -- same with other two

顺便说一下,我会考虑重新设计这个,将逗号分隔的值拆分成另一个表。

答案 1 :(得分:1)

试试select id, columnname from tbl where columnname like '%R Ashwin, 1 or none, None of the above%'

为了将来参考,使用fiddle可以使这种探索变得更加容易。

答案 2 :(得分:1)

从your_table中选择*其中列名LIKE“%R Ashwin,1或无,以上都不是”

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

看起来所有答案基本相同。在理想情况下,在大多数情况下,您不会将逗号分隔值存储在单个列中。