2015-03-20 5 views
1

У меня есть имя таблицы companyMysql RLIKE состояние

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

Один из способов, если ваши категории всегда будут в порядке и не включают категории с более чем 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 
+0

Thank's Bohemian. эта работа :) –