我有一个 db 表,其中有一个字段,其值以value1,value2,value3,value4
格式存储。我想找到该字段包含定义值的所有行,例如。value3
.
如何执行查询以搜索像这样的字段中的值?
采用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。
您可以使用以下方法执行此操作like
:
where concat(',', field, ',') like '%,value3,%'