我想查询其中包含数字的字符串一个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'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top