2011-01-25 5 views
1

나는 쿼리가 있습니다. field2는 일반적으로 01,02,03 또는 때로는 단 하나의 02와 같은 쉼표로 구분 된 값을 갖습니다. 그러나이 쿼리를 실행하면 값으로 01,02,03,04가있는 결과가 하나만 반환되고 isn ' 똑같은 데이터를 가진 유일한 테이블.MySQL의 쿼리 도움

이것은 본질적으로 테이블 모습입니다 같은 :

| ID | 필드 1     |                
FIELD2           | 1 | NULL | 01,02,03,04
| 2 | NULL | 01,02,03,04
| 3 | NULL | 01,02,04

+0

하지만이 분야 1가 null의 유일한 ?? – clyc

+0

데이터베이스의 모든 행은 현재 field1이 null로 설정되어 있습니다. – John

+0

'field1 is null'을 삭제하면 동일한 결과가 나타 납니까? – Rudu

답변

0

당신의 정규 표현식 기능을 사용할 수 있습니다 :

SELECT *  
    FROM table  
WHERE field1 IS NULL  
    AND (field2 REGEXP '0[124]') 

예컨대 :

SELECT * 
    FROM (
       SELECT 'SKJDFHSKDJF01KJSAKSJFHK DSFKJHSKDFJ' INFO 
       UNION ALL 
       SELECT 'SKJDFHSKDJF02KJSAKSJFHK DSFKJHSKDFJ' INFO 
       UNION ALL 
       SELECT 'SKJDFHSKDJF03KJSAKSJFHK DSFKJHSKDFJ' INFO 
       UNION ALL 
       SELECT 'SKJDFHSKDJF04KJSAKSJFHK DSFKJHSKDFJ' INFO 
       UNION ALL 
       SELECT 'SKJDFHSKDJF0KJSAKSJFHK DSFKJHSKDFJ' INFO 
       UNION ALL 
       SELECT 'SKJDFHSKDJF09KJSAKSJFHK DSFKJHSKDFJ' INFO 
       ) b 
WHERE INFO REGEXP '0[124]' 
+0

범위가 아니면 어떻게 되나요? 쿼리는 쉽게 01,03,05 일 수 있습니다. – John

+0

OP는 그가 01, 02, 03,04의 발생을 찾고 있다고 말했기 때문에 [0-4]의 범위를 사용했습니다. 요구 사항이 변경되면 쉽게 조정할 수 있습니다. – Chandu

+0

순차적이지 않으므로 편집했습니다. – John

0
SELECT * 
FROM table 
WHERE field1 IS NULL 
AND (field2 LIKE '%01%' OR field2 LIKE '%02%' OR field2 LIKE '%03%' OR field2 LIKE '%04%') 

그것은 당신이 필드 1에서 null 값을 기대하는 사람을 ... 필드 1 인 NULL에 대해 확인하는거야?