Mysql 选择字段中的值

问题描述 投票:0回答:3

我有一个 mysql 表,其中包含字段(id、name)。名称字段是逗号分隔的名称数组。 (例如 bob、joe、tim、fred)我想选择名称数组中包含值的所有行。我已经尝试过但无法让它工作。如有任何帮助,我们将不胜感激!

SELECT * FROM table WHERE '$value' IN name
mysql
3个回答
0
投票

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);

这可以工作,但它不会使用索引。


0
投票

FIND_IN_SET 函数 MYSQL

示例:语句在字符串列表中的第二个位置查找搜索字符串“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 并使用示例。希望有帮助。


0
投票

尝试使用 LIKE 代替 IN

SELECT * FROM 表 WHERE 字段 LIKE "%value%";

© www.soinside.com 2019 - 2024. All rights reserved.