我有一张表,该表的列名为category
,其中一行(我正在尝试查找)在该列的值为'17,1,3'
。我正在运行以下几个查询,并列出了结果:
SELECT * FROM firms WHERE FIND_IN_SET(17, category) > 0;
0个结果
SELECT * FROM firms WHERE FIND_IN_SET(1, category) > 0;
1个结果
SELECT * FROM firms WHERE FIND_IN_SET(3, category) > 0;
0个结果
当我搜索的值位于列表的边缘时,为什么不返回任何结果?对于较长的列表,也可以重复此操作,如果我有5个数字,则可以与中间的3个很好地配合,但对于外部的2个则不能。
答案 0 :(得分:0)
您需要在针子串周围使用单引号在草垛中查找。
尝试:
SELECT * FROM firms WHERE FIND_IN_SET('17', category) > 0;
和
SELECT * FROM firms WHERE FIND_IN_SET('3', category) > 0;
此外,请注意:在category
字符串的末尾有斜杠,它们是有干扰的。您需要摆脱那些斜线。
答案 1 :(得分:0)
使用它将返回所有三种情况
select * from firms where category like '%17%'
select * from firms where category like '%3%'
select * from firms where category like '%1%'