2016-06-28 4 views
0
다음과 같이 내가 MySQL의에서 정규 표현식을 일치하고

: $ 바닥의MySQL의 regexp와 일치하는 모든 문자

$this->db->where('bottom_id REGEXP', $bottom); 

값이 배열에서 온다 :

$bottom_key = array('EG','LE','KG','IS|BO|COA|ARG|PAW|HSE','JG|KH|BR|LL|MO|RA', 'JGS|KHS|BRS|LLS|KHC|BRC|TY|MOS|RAS', 'LEO|EGS'); 

내가 쿼리 'JG를 실행 | JGS는 JG 값에서 선택됩니다. 즉, JGS | KHS | BRS | LLS | KHC | BRC | TY | MOS | RAS '

JG가 JG가 아닌 JG 만 일치하도록 강제로 값을 정확히 일치 시키려면 어떻게해야합니까? 정규 표현식 기호 ^ 문자열 및 $ 끝의 시작을 나타냅니다

|------ 
|id|order_id|product_id|upper_id|bottom_id|create_date|del_date|ref_no|comm_code 
|------ 
|81|17|6151|HSA  |IS  |0000-00-00 00:00:00|2016-10-15|NULL|NULL 
|82|17|7441|BHE  |IS  |0000-00-00 00:00:00|2016-09-15|NULL|NULL 
|83|17|7501|MUA  |IS  |0000-00-00 00:00:00|2016-07-15|NULL|NULL 
|84|17|7137|KDB  |IS  |0000-00-00 00:00:00|2016-07-07|NULL|NULL 
|85|17|7137|KDD  |IS  |0000-00-00 00:00:00|2016-08-15|NULL|NULL 
|86|17|6613|PAA  |KG  |0000-00-00 00:00:00|2016-10-15|NULL|NULL 
|87|17|7315|CDA  |KG  |0000-00-00 00:00:00|2016-07-07|NULL|NULL 
|88|17|7525|COA  |KG  |0000-00-00 00:00:00|2016-07-07|NULL|NULL 
|89|17|7525|COA  |KG  |0000-00-00 00:00:00|2016-09-15|NULL|NULL 
|90|17|1600|JGC  |MOS  |0000-00-00 00:00:00|2016-08-15|PD65929|NULL 
+0

'/ (JG [^ S]) /? – CarlosCarucce

+0

원시 데이터 샘플 및 예상 결과를 제공 할 수 있습니까? – Alex

+0

간단한 테스트를 여기에 만들었습니다 : https://regex101.com/r/eM8sR5/1 – CarlosCarucce

답변

0

사용

$bottom_key = array('^EG$','^LE$','^KG$','^(IS|BO|COA|ARG|PAW|HSE)$','^(JG|KH|BR|LL|MO|RA)$', '^(JGS|KHS|BRS|LLS|KHC|BRC|TY|MOS|RAS)$', '^(LEO|EGS)$'); 

:

데이터 테이블은 다음과 같습니다.

0

JG, 즉 JG $ 다음에 $를 넣어 엄격하게 일치시킬 수 있습니다. 일치하는 문자열이 G로 끝나야 함을 의미합니다. 문제가 해결 될 것입니다.

0

정규식 배열이 아닌 IN 절 하나를 사용하는 것이 더 나을 것입니다.

bottom_id IN ('EG','LE','KG','IS','BO','COA','ARG','PAW','HSE','JG',...) 
관련 문제