source

MySQL과 null 값 비교

lovecheck 2022. 12. 8. 21:25
반응형

MySQL과 null 값 비교

MySQL 테이블에 CODE라는 열이 있으며, 이 열은 NULL일 수 있습니다. 예를 들어 CODE='C'가 포함된 행이 있으며 선택한 결과 집합에서 무시하려고 합니다.결과 세트에 CODE=COMD 또는 CODE!='C' 중 하나를 포함할 수 있습니다.

다음 쿼리는 CODE가 NULL인 행을 반환하지 않습니다.

SELECT * from TABLE where CODE!='C'

하지만 이 쿼리는 예상대로 작동하며 올바른 방법이라는 것을 알고 있습니다.

SELECT * from TABLE where CODE IS NULL OR CODE!='C'

궁금한 점은 CODE!='C'만 있는 경우 CODE=C'가 반환되지 않는 이유는 무엇입니까? 'C'는 NULL이 아닙니다. 여기서는 값을 문자로 비교하지 않습니다.왜 그렇게 안 되는지 누가 좀 밝혀줄 수 있어요?

MySQL에서는NULL는 값이 없는 것이 아니라 '알 수 없는 값'으로 간주됩니다.NULL의 MySQL Reference를 참조하십시오.

와의 산술적 비교NULLtrue 또는 false를 반환하지 않고 반환한다.NULL대신. 그래서...NULL != 'C'돌아온다NULLtrue를 반환하는 것이 아니라

'NULL'과의 산술 비교는 false를 반환합니다.SQL에서 이를 확인하려면:

SELECT IF(NULL=123,'true','false') 

확인하다NULL사용할 필요가 있는 가치IS NULL&IS NOT NULL교환입니다.

테스트 및 다음 문서를 기반으로 합니다.http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

<=>를 사용하여 null을 비교하고 부울 결과를 얻을 수 있습니다.
메모: EQ 연산자가 아닌 것처럼 보이지만 EQ 연산자입니다.

예를 들어 다음과 같습니다.

select x <=> y; 
or
select @x <=> @y;

또한 string vs null, string vs string 등을 비교합니다.

SQL에서 NULL 값은 다른 값과 비교할 수 없는 특수한 값입니다.NULL과의 직접 비교 결과는 항상 NULL이지만 구현에 따라서는 FALSE가 발견될 수 있습니다.

null 값을 테스트하려면IS NULL그리고.IS NOT NULL.

SELECT * 
FROM `table_name` 
WHERE IFNULL(`column_name` != 'C', TRUE)

지정된 문제는 조인에서도 나타날 수 있으며 위의 답변은 특별히 도움이 되지 않습니다.내가 선호하는 방법은 그렇지 않으면 불가능한 가치로 결합하는 것이다.예를 들어, 이것은

   select foo from bar
     inner join baz on bar.x = baz.y

이라면 소용없다bar.x그리고.baz.y둘 다 null입니다(결과는 얻을 수 없습니다).회피책은 예를 들어 를 사용하는 것입니다.

   select foo from bar
     inner join baz on coalesce(bar.x, -1) = coalesce(baz.y, -1)

어디에-1는 "불가능한" 값입니다.즉, 데이터 세트에 표시할 수 없습니다.

select * from user where application_id='1223333344' and name is null;

사용방법:

SELECT * from TABLE where NOT(CODE <=> 'C')

언급URL : https://stackoverflow.com/questions/9608639/mysql-comparison-with-null-value

반응형