1

我有一个表名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”

如何解决这个问题?

4

1 回答 1

2

一种方法是,如果您的类别始终有序且不包含超过 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
于 2015-03-20T05:32:03.180 回答