我有一个 mysql 表,其中包含字段(id、name)。名称字段是逗号分隔的名称数组。 (例如 bob、joe、tim、fred)我想选择名称数组中包含值的所有行。我已经尝试过但无法让它工作。如有任何帮助,我们将不胜感激!
SELECT * FROM table WHERE '$value' IN name
IN
仅当您自己指定每个元素时才有效。
即
'bob' IN ('bob','joe','tim','fred')`
MySQL 正在将逗号分隔的字符串读取为一个值,而不是 4。您的查询运行如下:
'bob' IN ('bob,joe,tim,fred')
这不起作用,因为
'bob'
不存在于您提供的一个元素中 IN
。
一种解决方案是使用
FIND_IN_SET
。
SELECT * FROM table WHERE FIND_IN_SET('$value', name);
这可以工作,但它不会使用索引。
示例:语句在字符串列表中的第二个位置查找搜索字符串“ank”。所以它返回 2。
SELECT FIND_IN_SET('ank', 'b,ank,of,monk');
功能:
SELECT *
FROM author
WHERE FIND_IN_SET(left(aut_name,7), 'William,steven,jung,angalo') > 0;
阅读 MySQL API 并使用示例。希望有帮助。
尝试使用 LIKE 代替 IN
SELECT * FROM 表 WHERE 字段 LIKE "%value%";