如何使用逗号分隔值在字段上设置'where'子句?

时间:2013-03-30 14:50:09

标签: mysql sql select

我有一个db表,其中的字段值以value1,value2,value3,value4格式存储。 我想找到这个字段包含一个定义值的所有行,例如。 value3

如何执行查询以搜索像这样的字段中的值?

2 个答案:

答案 0 :(得分:8)

使用FIND_IN_SET()

SELECT  *
FROM    tableName
WHERE   FIND_IN_SET('value3', 'comma separated value here') > 0

SOURCE

MySQL Docs的描述:

  

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

答案 1 :(得分:0)

您可以使用like

执行此操作
where concat(',', field, ',') like '%,value3,%'