2014-11-22 14 views
0

을 포함 나는 그것이 단지 p와 null 값을 포함 말합니다이 열을 비교하려면이행을 비교하고 널

p123 
p139 
d291 
c9384 
p393 
null 
null 
c148 

같은 번호를 가진 열이. 내 코드는 다음과 같습니다 나는 조건 열이있을 때

WHERE (COLUMN NOT LIKE 'C%' AND COLUMN NOT LIKE 'D%' OR COLUMN IS NULL) 

는 널 (null)에서 다시 함께 제공됩니다,하지만 난이 null 값을 추가 할 때, 그것은 다시 함께 제공 'C의 %'AND D의 %를 좋아하지 COLUMN을 좋아하지 하나의 교류 열에는 c가있는 것을 포함하지 않는 비교가있다. 나는 명령을 어떻게 얻는 지 또는 사용할 괄호를 어떻게 알지 못한다. 내 대답에 귀하의 코멘트에 대해서는

WHERE COLUMN LIKE 'P%' OR COLUMN IS NULL 

당신이 원하는 것은 다음 WHERE 조건의 첫 번째 문자에 "D"또는 "C"를 일치하지 않는 모든 값 인 경우 :

+0

''p 만 포함한다고 말하지만 'C'와 (와) 같이하지 마시고 D % ''와 (과) 같은 열을 말하십시오. 뭐가 맞습니까? 그렇다면 다른 기록 A123이 있다면 그것을 포함해야 할 것인가? –

+0

예. 그런 경우가있을 수 있으며 포함될 수 있습니다. 우리는 c와 d를 원하지 않지만 null을 제외하고 싶지 않다는 것을 알고 있습니다. –

+0

이것은 ('D %'수정 후) 작동합니다. http://sqlfiddle.com/#!6에서 실패한 테스트 케이스를 보여주십시오. – philipxy

답변

0

당신은 와일드 카드를 사용할 수 있습니다 c 또는 d입니다. 귀하의 예에서는 p으로 시작하는 세 개의 행과 null의 두 행이 반환됩니다.

0

그것은해야한다 이는 다음과 같습니다

where [column] not like '[cd]%' or [column] is null 

이 어떤 행이로 시작 제외 것 :

WHERE (COLUMN NOT LIKE 'C%' AND COLUMN NOT LIKE 'D%') OR COLUMN IS NULL 
+0

p가 아닌 다른 시작 문자가있는 다른 행이 있고 그것을 원한다면 어떻게 될까요? 왜 그렇게 말하지 않으면 여전히 c 값을 포함하고 있습니까? –

+0

@epv 당신이하는 말을 듣지 못합니다. 나는 이것을 기반으로 어디에서 clausule을 만들었습니까? "p 및 null 값만 포함합니다". 문자 "c"로 시작하는 값도 수집하고 싶습니까? – Verhaeren

관련 문제