SQL字段中用逗号隔开的值怎么查询?
一、FIND_IN_SET (推荐)
FIND_IN_SET(str,strlist)
str 要搜索的字符串;strlist 要搜索的字符串值列表(以逗号分隔 如 (1,2,5,6,8))
假设角色表role有以下内容,uid 字段表示用户拥有这种角色。
id |uid |
---+-------+
1 |1,2 |
2 |1,2,3 |
3 |4,5 |
4 |1,2,120|
5 |3,4,5 |
1. 查询用户ID包含 1 的数据
select * from role where FIND_IN_SET('1',uid)
查询结果:
id|uid |
--+-------+
1|1,2 |
2|1,2,3 |
4|1,2,120|
2. 查询用户ID包含 5 的数据
select * from role where FIND_IN_SET('5',uid)
查询结果:
id|uid |
--+------+
3|4,5 |
5|3,4,5 |
二、用LIKE 查询 在两边都加上逗号
这样做法需要在保存数据时,在左右两边都加上逗号。
SELECT * FROM role WHERE uid LIKE '%,2,%';
|id| uid | |id| uid |
--+--------+ --+---------+
|1|1,2 | ===>> |1|,1,2, |
|2|1,2,3 | |2|,1,2,3, |
|4|1,2,120| |4|,1,2,120,|