题
我想查询其中包含数字的字符串一个MySQL表 (即 '1,2,3,4,5')。
如何搜索,看它是否具有“1”,但不是“11”铭记,如果它是“9,10”“9%”不工作?
固定!
(field like '10' OR field like '%,10,%' OR field like '%,10' OR field like '10,%')
解决方案
您需要的功能 FIND_IN_SET 。顺便说一句,“9%”应该工作,如果列包含您指定的值,你确定你要查询
SELECT * FROM table WHERE field LIKE '9%'?
其他提示
您可以尝试的功能FIND_IN_SET
select find_in_set('1','1,2,3,11,12')
标准SQL可以做到这一点,以及:
...
WHERE
',' + SetValue + ',' LIKE '%,1,%'
AND ',' + SetValue + ',' NOT LIKE '%,11,%'
此表达式不能利用索引的,因此性能会快速降解作为表大小上升。
为了更好的性能你的表应该是正确的规范化,e.g。
SetId SetValue
1 1
1 2
1 3
1 4
1 5
代替
的SetId SetValue
1 '1,2,3,4,5'
不隶属于 StackOverflow