3

我知道拥有这样的 MySQL 表结构不是一种合适的技术,但我必须使用这样的技术。问题是,表中的字段具有逗号分隔整数的值,例如“1,3,5,7,10”,我希望查询返回行,其中field有一个查询传递的数字,例如:

SELECT * FROM `table` WHERE '5' IN (`field_in_table`)

但是,如果在这种情况下,“5”不是该字段中的第一个数字,则它不起作用。任何建议,如何解决?

在此先感谢, 问候, 乔纳斯

4

5 回答 5

8

看一下

FIND_IN_SET

如果字符串 str 在由 N 个子字符串组成的字符串列表 strlist 中,则返回 1 到 N 范围内的值。字符串列表是由以“,”字符分隔的子字符串组成的字符串。如果第一个参数是常量字符串,而第二个参数是 SET 类型的列,则 FIND_IN_SET() 函数被优化为使用位算术。如果 str 不在 strlist 中或 strlist 是空字符串,则返回 0。

于 2010-09-17T09:41:41.993 回答
1

你可以WHERE field_in_table LIKE '%5%'改用。当然,问题是,'1,59,98' 也会返回。

于 2010-09-17T09:40:14.937 回答
1
SELECT * FROM table WHERE field_in_table LIKE '%5'");

应该管用

于 2010-09-17T09:41:18.413 回答
1

你可以试试

SELECT *
    FROM table
    WHERE '%,5,%' LIKE field_in_table OR
          '%,5'   LIKE field_in_table OR
          '5,%'   LIKE field_in_table;

更好的方法可能是使用正则表达式,我不是一个权威的主题。

于 2010-09-17T09:41:22.577 回答
0
SELECT * 
FROM table 
WHERE FIELD LIKE '%,5,%' OR 
      FIELD LIKE '5,%' OR 
      FIELD LIKE '%,5'
于 2010-09-17T09:41:57.873 回答