좋아요와 좋아요가 반대 결과를 반환하지 않음
저는 200개의 레코드가 있는 테이블을 가지고 있는데, 그 중 10개의 레코드에 'TAX'라는 단어가 포함된 텍스트가 있습니다.
실행 중인 경우
Select * from tbl1 WHERE [TextCol] LIKE '%TAX%'
그러면 저는 그 10개의 기록으로 결과를 정확하게 알 수 있습니다.
하지만 제가 그 기록들을 제외하려고 할 때는
Select * from tbl1 WHERE [TextCol] NOT LIKE '%TAX%'
190개 대신 100개의 레코드만 반환합니다.
이것이 올바른 결과를 반환합니까?
Select * from tbl1 WHERE COALESCE([TextCol],'-1') NOT LIKE '%TAX%'
믿어요NULL
여기서 문제가 되는 것은 값입니다. 열에 값이 포함되어 있으면NULL NOT LIKE '%TAX%'
돌아올 것입니다UNKNOWN/NULL
따라서 선택되지 않습니다.
가치를 다루는 것에 대해 읽으시거나 여기서 읽어보시기를 권합니다.
@ughai가 제안한 것처럼 성능에 문제가 있는 경우 다음을 사용할 수도 있습니다.
Select * from tbl1
WHERE [TextCol] NOT LIKE '%TAX%'
OR [TextCol] IS NULL
SQL 비교 연산자는 다음과 같은 세 가지 가능한 값을 산출합니다.참, 거짓 및 알 수 없음.한 피연산자 또는 두 피연산자가 모두NULL
결과는 Unknown입니다.일부 값(사람의 나이)을 상수(18)와 비교하는 다음 예를 생각해 보십시오.
21 >= 18 -- True
15 >= 18 -- False
NULL >= 18 -- Unknown
보다시피 데이터베이스는 다음 항목을 결정할 수 있습니다.NULL
18보다 큽니다.
데이터베이스는 다음 위치의 행만 반환합니다.WHERE
절은 True로 평가됩니다.식 반전(예:WHERE age >= 18
로 변경된.WHERE age < 18
)는 알 수 없는 결과에 영향을 주지 않습니다.
를 사용하여 일치시킬 수 있습니다.NULL
가치.다음 쿼리는 열이 패턴과 일치하지 않거나 열이 NULL인 행을 선택합니다.
WHERE [TextCol] NOT LIKE '%TAX%' OR [TextCol] IS NULL
다음과 같은 기능ISNULL
그리고.COALESCE
변환에 사용할 수 있습니다.NULL
어느 정도 가치가 있는
Select * from tbl1 WHERE ([TextCol] NOT LIKE '%TAX%') AND ([TextCol] NOT LIKE '%TAX%')
select * from tbl1 where [TextCol] NOT LIKE '%TAX%' OR [TextCol] IS NULL
저도 같은 문제를 가지고 있었습니다.IN
null이 있는 단순 int 열의 연산자입니다.생각했던 것처럼 서로 반대되는 부분이 없다는 것을 알게 되었습니다. (행 수를 보면 알 수 있었습니다.)
select * from Dest where id in(select id from Source)
select * from Dest where id NOT in(select id from Source)
서로를 뒤집기 위해 나는 그것들을 다음과 같이 다시 써야 했습니다.
select * from Dest where isnull(id,-2) in(select isnull(id,-1) from Source)
select * from Dest where isnull(id,-2) NOT in(select isnull(id,-1) from Source)
언급URL : https://stackoverflow.com/questions/40376260/not-like-and-like-not-returning-opposite-result
'programing' 카테고리의 다른 글
플로팅 차일드 디브의 키를 부모 키로 확장하려면 어떻게 해야 합니까? (0) | 2023.08.10 |
---|---|
Flask 서버에서 콘솔 메시지 사용 안 함 (0) | 2023.08.10 |
MS 액세스에서 반올림 (0) | 2023.08.10 |
Jquery에서 키와 값을 모두 배열로 밀어넣는 방법 (0) | 2023.08.10 |
"NS_ERROR_DOM_BAD_URI: 제한된 URI에 대한 액세스가 거부되었습니다." (0) | 2023.08.10 |