mysql 中如何查询某列字符串中包含查询的部分字符串

2020-05-15 10:34:13 +08:00
 su2018
某列中的字符串按逗号(,)分隔. 如 值 1:aa, bb, cc, 值 2: bb,cc, 值 3: dd,hh, 值 4: jj
查询 bb, dd 时如何把值 1,值 2,值 3 都查询出来
3952 次点击
所在节点    MySQL
13 条回复
littleylv
2020-05-15 10:40:45 +08:00
FIND_IN_SET
wangyanrui
2020-05-15 10:43:14 +08:00
是我太菜了吗,不是 LIKE '%bb%' 嘛 0.0
opengps
2020-05-15 10:44:38 +08:00
@wangyanrui 换成字符串截取判断索引值效果更佳
YangXian
2020-05-15 10:44:44 +08:00
find_in_set 就行了
littleylv
2020-05-15 10:44:46 +08:00
@wangyanrui #2 值 5: aa,bbb,cc 也会被你查出来,但不对
asAnotherJack
2020-05-15 11:38:20 +08:00
@littleylv #1 学到了,另外 FIND_IN_SET 除了处理逗号分隔,有办法处理其他分隔符吗,比如用分号分隔的有什么好的办法吗
littleylv
2020-05-15 11:46:42 +08:00
@asAnotherJack #6 The second parameter haystack is a list of comma-separated strings that to be searched.
只能处理逗号,分号的话,可以考虑 REPLACE 替换成逗号再 FIND_IN_SET
FIND_IN_SET('bb', REPLACE('aa;bb;cc', ';', ',') )
dongisking
2020-05-15 11:50:53 +08:00
FIND_IN_SET,bb or hh
asAnotherJack
2020-05-15 11:52:32 +08:00
@littleylv #7 多谢
su2018
2020-05-15 14:27:27 +08:00
@littleylv @dongisking 你们的意思是附言 1 那样吧
dongisking
2020-05-15 14:37:26 +08:00
@su2018
wangyanrui
2020-05-16 19:44:52 +08:00
@littleylv 可以存 ,aa,bb,cc, 这种数据,然后 LIKE '%,bb,%'; 手动 doge
thinkmore
2020-05-18 09:37:32 +08:00
如果在 mongodb 中这种查询就非常 easy,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671916

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX