我正在尝试查询一个包含数字字符串(即'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,%')
你可以试试 find_in_set 函数
select find_in_set('1','1,2,3,11,12')
您需要功能FIND_IN_SET。顺便说一句,'9%' 应该可以工作,如果该列包含您指定的值,您确定要查询吗
SELECT * FROM table WHERE field LIKE '9%'?
标准 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'