문제

저장된 절차 내에 다음 코드가 있습니다.

WHERE
    WPP.ACCEPTED = 1 AND
    WPI.EMAIL LIKE '%@MATH.UCLA.EDU%' AND
    (WPP.SPEAKER = 0 OR
    WPP.SPEAKER IS NULL) AND
    WPP.COMMENT NOT LIKE '%CORE%' AND
    WPP.PROGRAMCODE = 'cmaws3'

비슷한 진술은 작동하지 않습니다. 그렇지 않으면 누군가가 코어를 포함하지 않는 주석 열이있는 항목이 있고 다른 모든 열은 괜찮습니다.

이것에 무엇이 잘못되었는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

만약에 WPP.COMMENT 포함 NULL, 조건이 일치하지 않습니다.

이 쿼리 :

SELECT  1
WHERE   NULL NOT LIKE '%test%'

아무것도 돌려주지 않을 것입니다.

a NULL 열, 둘 다 LIKE 그리고 NOT LIKE 검색 문자열이 반환됩니다 NULL.

귀하의 의견으로는 반환해야 할 행의 관련 값을 게시 해 주시겠습니까?

다른 팁

특정 주석 열의 값이 NULL입니까?

때로는 마음에 들지 않으면 널 주위에 올바르게 행동하는 방법을 모릅니다.

방금 같은 문제를 발견하고 해결했지만이 게시물을 찾기 전에는 그렇지 않았습니다. 그리고 당신의 질문이 실제로 대답하지 않은 것처럼 보았을 때, 여기 내 해결책이 있습니다 (희망적으로 당신을 위해 일할 것입니다. 다른 사람이 내가 한 것과 같은 일을 찾고 있습니다.

대신에;

... AND WPP.COMMENT NOT LIKE '%CORE%' ...

노력하다;

... AND NOT WPP.COMMENT LIKE '%CORE%' ...

기본적으로 내가 평가 한 필드의 다른 쪽 "이 아닌"을 움직여서 나를 위해 일했습니다.

이걸 만나요, 대답은 간단합니다. ISNULL. 테스트중인 필드에 텍스트 비교 검색을 수행 할 때 값 (일부 레코드에서)이없는 경우 SQL은 행을 반환하지 않습니다.

WHERE wpp.comment NOT LIKE '%CORE%'

그래서 당신은 일시적으로 가치를 대체했습니다. null (빈) 사용하여 레코드 ISNULL 명령, 예를 들어

WHERE (ISNULL(wpp.comment,'')) NOT LIKE '%CORE%'

그러면 널이있는 모든 레코드를 표시하고 일치하는 기준이있는 모든 레코드를 생략합니다. 당신이 원한다면, 당신은 당신이 기억하는 데 도움이되는 쉼표에 무언가를 넣을 수 있습니다.

WHERE (ISNULL(wpp.comment,'some_records_have_no_value')) NOT LIKE '%CORE%'

Mattgcon,

"좋아하지 않는"라인과 동일한 SQL을 실행하면 더 많은 행을 얻을 수 있습니까? 그렇지 않은 경우 데이터를 확인하십시오. 귀하의 질문에서 언급 한 것을 알고 있지만 실제 SQL 문이 해당 조항을 사용하고 있는지 확인하십시오. Null이있는 다른 답변도 좋은 생각입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top