Mysql Rlike条件

标签 mysql rlike

我有一个表名 company

Company  |  category_id
NEC      |     cg17,cg19,cg23
Huawei   |     cg55,cg17,cg25

我这样查询:

select * from company
where category_id RLIKE '^cg17,cg19'

结果:

Company  |  category_id
NEC      |  cg17,cg19,cg23

但是当我这样查询时:

select * from company
where category_id RLIKE '^cg17,cg23'

我没有得到任何行,但我想要公司“NEC”,因为 NEC 有 category_id "cg17,cg19,cg23"

如何解决这个问题?

最佳答案

一种方式,如果您的类别始终按顺序排列并且不包含超过 2 位数字的类别:

select * from company
where category_id LIKE 'cg17%cg23'

恕我直言,一种更好的方法,它将字段视为正确的 CSV 值:

select * from company
where FIND_IN_SET('cg17', category_id) > 0
and FIND_IN_SET('cg23', category_id) > 0

关于Mysql Rlike条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159942/

相关文章:

mysql - 如何获取除括号中的所有匹配词?正则表达式/Mysql

php - 分数上下的数据库关系,像stackoverflow那样?

mysql - 从数据库(mysql)中获取数据并将其显示在cakephp的文本框中

mysql - 使用 change 更改表列

MySQL - 邻接表模型 - 获取深度

mysql LIKE 和正则表达式 VS RLIKE 和变音符号

database - Postgres 是否支持 jsonb 列类型中的 Ilike 语句?

r - 使用 %like% 运算符创建子集

mysql - 在 Mac OS 上升级到 MySQL 5.7 后恢复数据库吗?

mysql - RLIKE/REGEXP 和 LIKE 的等价性 - 匹配整个字符串与任意子字符串