在数字字符串上使用通配符的Mysql查询

时间:2009-03-13 12:35:21

标签: sql mysql wildcard

我正在尝试查询包含数字字符串的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,%') 

3 个答案:

答案 0 :(得分:2)

您可以尝试使用函数find_in_set

select find_in_set('1','1,2,3,11,12')

答案 1 :(得分:1)

您需要FIND_IN_SET功能。顺便说一下,'9%'应该有用,如果列包含你指定的值,你确定要查询

SELECT * FROM table WHERE field LIKE '9%'?

答案 2 :(得分:0)

标准SQL也可以这样做:

...
WHERE 
  ',' + SetValue + ',' LIKE '%,1,%' 
  AND ',' + SetValue + ',' NOT LIKE '%,11,%' 

此表达式无法使用索引,因此随着表格大小的增加,性能会迅速降低。

为了获得更好的性能,您的表格应该正确标准化,例如

SetId  SetValue
    1  1
    1  2
    1  3
    1  4
    1  5

而不是

SetId  SetValue
    1  '1,2,3,4,5'