我知道拥有这样的 MySQL 表结构不是一种合适的技术,但我必须使用这样的技术。问题是,表中的字段具有逗号分隔整数的值,例如“1,3,5,7,10”,我希望查询返回行,其中field
有一个查询传递的数字,例如:
SELECT * FROM `table` WHERE '5' IN (`field_in_table`)
但是,如果在这种情况下,“5”不是该字段中的第一个数字,则它不起作用。任何建议,如何解决?
在此先感谢, 问候, 乔纳斯
看一下
如果字符串 str 在由 N 个子字符串组成的字符串列表 strlist 中,则返回 1 到 N 范围内的值。字符串列表是由以“,”字符分隔的子字符串组成的字符串。如果第一个参数是常量字符串,而第二个参数是 SET 类型的列,则 FIND_IN_SET() 函数被优化为使用位算术。如果 str 不在 strlist 中或 strlist 是空字符串,则返回 0。
你可以WHERE field_in_table LIKE '%5%'
改用。当然,问题是,'1,59,98' 也会返回。
SELECT * FROM table WHERE field_in_table LIKE '%5'");
应该管用
你可以试试
SELECT *
FROM table
WHERE '%,5,%' LIKE field_in_table OR
'%,5' LIKE field_in_table OR
'5,%' LIKE field_in_table;
更好的方法可能是使用正则表达式,我不是一个权威的主题。
SELECT *
FROM table
WHERE FIELD LIKE '%,5,%' OR
FIELD LIKE '5,%' OR
FIELD LIKE '%,5'