表格中有一个字段,存储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)中匹配,如何为此编写查询,是否存在任何可能的方法只使用查询而不是编程?
答案 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
看起来所有答案基本相同。在理想情况下,在大多数情况下,您不会将逗号分隔值存储在单个列中。