V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
su2018
V2EX  ›  MySQL

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

  •  
  •   su2018 · 2020-05-15 10:34:13 +08:00 · 4131 次点击
    这是一个创建于 1682 天前的主题,其中的信息可能已经有所发展或是发生改变。
    某列中的字符串按逗号(,)分隔. 如 值 1:aa, bb, cc, 值 2: bb,cc, 值 3: dd,hh, 值 4: jj
    查询 bb, dd 时如何把值 1,值 2,值 3 都查询出来
    第 1 条附言  ·  2020-05-15 14:25:23 +08:00
    我之前的做法是 先把 bb,cc 转为数组, 然后循环拼凑, 如 (0 or FIND_IN_SET('bb',字段) or FIND_IN_SET('cc',字段))
    但是还是觉得有点繁琐
    13 条回复    2020-05-18 09:37:32 +08:00
    littleylv
        1
    littleylv  
       2020-05-15 10:40:45 +08:00
    FIND_IN_SET
    wangyanrui
        2
    wangyanrui  
       2020-05-15 10:43:14 +08:00
    是我太菜了吗,不是 LIKE '%bb%' 嘛 0.0
    opengps
        3
    opengps  
       2020-05-15 10:44:38 +08:00 via Android
    @wangyanrui 换成字符串截取判断索引值效果更佳
    YangXian
        4
    YangXian  
       2020-05-15 10:44:44 +08:00
    find_in_set 就行了
    littleylv
        5
    littleylv  
       2020-05-15 10:44:46 +08:00
    @wangyanrui #2 值 5: aa,bbb,cc 也会被你查出来,但不对
    asAnotherJack
        6
    asAnotherJack  
       2020-05-15 11:38:20 +08:00
    @littleylv #1 学到了,另外 FIND_IN_SET 除了处理逗号分隔,有办法处理其他分隔符吗,比如用分号分隔的有什么好的办法吗
    littleylv
        7
    littleylv  
       2020-05-15 11:46:42 +08:00   ❤️ 1
    @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
        8
    dongisking  
       2020-05-15 11:50:53 +08:00
    FIND_IN_SET,bb or hh
    asAnotherJack
        9
    asAnotherJack  
       2020-05-15 11:52:32 +08:00
    @littleylv #7 多谢
    su2018
        10
    su2018  
    OP
       2020-05-15 14:27:27 +08:00
    @littleylv @dongisking 你们的意思是附言 1 那样吧
    dongisking
        11
    dongisking  
       2020-05-15 14:37:26 +08:00
    @su2018
    wangyanrui
        12
    wangyanrui  
       2020-05-16 19:44:52 +08:00
    @littleylv 可以存 ,aa,bb,cc, 这种数据,然后 LIKE '%,bb,%'; 手动 doge
    thinkmore
        13
    thinkmore  
       2020-05-18 09:37:32 +08:00
    如果在 mongodb 中这种查询就非常 easy,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2745 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:12 · PVG 16:12 · LAX 00:12 · JFK 03:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.