在\集中查找\而不是在干草堆的边缘查找值

hivapdat  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(214)

我有一个表,有一列叫做 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就不行了。谢谢你的帮助。

uxh89sit

uxh89sit1#

就像它会退回所有三个箱子一样

select * from firms where category like '%17%'
 select * from firms where category like '%3%'
 select * from firms where category like '%1%'
bgibtngc

bgibtngc2#

你需要在针的子串周围使用单引号来查找。
尝试:

SELECT * FROM firms WHERE FIND_IN_SET('17', category) > 0;

以及

SELECT * FROM firms WHERE FIND_IN_SET('3', category) > 0;

另外,请注意,在的末尾和开头都有斜杠 category 字符串,它们相互干扰。你得把那些割伤去掉。

相关问题