>데이터 베이스 >MySQL 튜토리얼 >MySQL 쿼리에서 IN 키워드를 사용하여 NULL 값을 처리하는 방법은 무엇입니까?

MySQL 쿼리에서 IN 키워드를 사용하여 NULL 값을 처리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 05:45:02766검색

How to Handle NULL Values with IN Keyword in MySQL Queries?

MySQL IN 키워드는 NULL 값을 제외합니다

특정 값을 기준으로 행을 필터링하기 위해 MySQL 쿼리에서 IN 키워드를 사용하는 경우 예기치 않은 결과가 발생할 수 있습니다. NULL 값으로 작업할 때 발생합니다. 이 문서에서는 이 동작의 이유를 조사하고 이러한 시나리오에서 NULL 값을 올바르게 처리하는 방법을 제공합니다.

당신이 언급한 쿼리:

select count(*) from Table1 where CurrentDateTime>'2012-05-28 15:34:02.403504' and Error not in ('Timeout','Connection Error');

놀랍게도 오류 열에 NULL 값이 포함된 행이 제외됩니다. . 이는 IN 키워드가

Error <> 'TimeOut' AND Error <> 'Connection Error'

와 의미상 동일하기 때문입니다. NULL 값의 속성으로 인해 위 표현식은 true로 평가될 수 없습니다. NULL 값은 자신을 포함한 다른 값과 동일하지 않습니다. 따라서 오류 열에 NULL 값이 있는 행은 필터링됩니다.

결과 집합에 NULL 값을 포함하려면 다음과 같이 쿼리를 조정하면 됩니다.

  • COALESCE (Error,'') not in ('Timeout','Connection Error'): 비교하기 전에 Error 열의 NULL 값을 빈 문자열로 바꿉니다.
  • Error IS NULL OR Error not in ('Timeout','Connection Error'): 이는 NULL 값과 일치하지 않는 값을 모두 명시적으로 확인합니다.
  • CASE WHEN Error IS NULL THEN 1 ELSE Error not in ('Timeout','Connection Error') THEN 1 END = 1: CASE 문을 사용하여 NULL과 일치하는 값을 모두 1로 변환한 다음 1과 같은지 확인합니다.

예:

create table tbl (msg varchar(100) null, description varchar(100) not null);

insert into tbl values ('hi', 'greet'), (null, 'nothing');

select 'hulk' as x, msg, description from tbl where msg not in ('bruce','banner');

이 쿼리는 msg가 'hi'인 행만 반환합니다. NULL 값은 불확정성으로 인해 제외되기 때문입니다.

위 내용은 MySQL 쿼리에서 IN 키워드를 사용하여 NULL 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.