博客
关于我
MySql 查询以逗号分隔的字符串的方法(正则)
阅读量:792 次
发布时间:2023-02-10

本文共 556 字,大约阅读时间需要 1 分钟。

数据库表中某个字段保存的值为“01,07,08”,需要查询下表中对应的名称。以下是一些可能的解决方法:

  • 使用find_in_set()函数

    这个函数可以检查字符串中是否存在特定的子字符串。以下是查询包含“01”、“07”或“08”的记录的SQL语句:

    SELECT * FROM test WHERE find_in_set('01', itemname) OR find_in_set('07', itemname) OR find_in_set('08', itemname);
  • 使用正则表达式

    正则表达式可以更简洁地匹配多个值。以下是使用正则表达式的SQL语句:

    SELECT * FROM test WHERE itemname REGEXP '(01|07|08)';
  • 使用LIKEIN

    如果数据库支持,可以尝试将字段值转换为数组,并使用IN子句进行匹配。例如:

    SELECT * FROM test WHERE itemname LIKE '%01,07,08%' OR itemname LIKE '%01,08%';

    不过这种方法可能需要多次重复,且不如正则表达式灵活。

  • 总结

    在支持正则表达式的数据库环境下,使用正则表达式是最优的选择,因为它简洁且灵活,只需修改表达式即可扩展更多值。

    转载地址:http://zfbfk.baihongyu.com/

    你可能感兴趣的文章
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>
    mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>
    Mysql8.0的特性
    查看>>
    MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    查看>>
    MySQL8修改密码的方法
    查看>>
    Mysql8在Centos上安装后忘记root密码如何重新设置
    查看>>
    Mysql8在Windows上离线安装时忘记root密码
    查看>>
    MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
    查看>>
    mysql8的安装与卸载
    查看>>
    MySQL8,体验不一样的安装方式!
    查看>>
    MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
    查看>>