1

我正在尝试查询一个包含数字字符串(即'1,2,3,4,5')的mysql表。

如果它是 '9,10' '9%' 不起作用,我如何搜索以查看它是否有 '1' 但不是 '11'?

固定的!

(field like '10' OR field like '%,10,%' OR field like '%,10' OR field like '10,%') 
4

3 回答 3

2

你可以试试 find_in_set 函数

select find_in_set('1','1,2,3,11,12')
于 2009-03-13T12:41:39.710 回答
1

您需要功能FIND_IN_SET。顺便说一句,'9%' 应该可以工作,如果该列包含您指定的值,您确定要查询吗

SELECT * FROM table WHERE field LIKE '9%'?
于 2009-03-13T12:40:36.360 回答
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'
于 2009-03-13T12:52:23.587 回答