FIND_IN_SET找不到干草堆边缘的值

时间:2018-10-23 16:24:23

标签: mysql sql

我有一张表,该表的列名为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个则不能。

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%'