3

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

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

4

2 回答 2

11

采用FIND_IN_SET()

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

来源

MySQL Docs 中的描述:

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

于 2013-03-30T14:53:41.560 回答
0

您可以使用以下方法执行此操作like

where concat(',', field, ',') like '%,value3,%'
于 2013-03-30T14:53:45.670 回答