[Oracle] Where column_name = 'Y' 의 반대는 Where column_name is null or column_name <> 'Y'

오라클 데이터베이스에서 WHERE column_name = 'Y'의 반대 조건을 명확하게 표현하려면 아래와 같이 작성할 수 있어요.

WHERE column_name IS NULL 
   OR column_name <> 'Y'

이유

  1. NULL 포함 필요
    NULL 값은 비교 연산에서 제외되기 때문에, 반대 조건을 작성할 때 반드시 IS NULL 조건을 추가해야 합니다.
  2. <> 사용
    <> 'Y''Y'가 아닌 모든 값을 포함합니다. 하지만 NULL 값은 여전히 제외되므로 IS NULL과 결합해야 완전한 반대 조건이 됩니다.

두 조건을 논리적으로 분석

  • column_name = 'Y'의 참인 경우는 오직 column_name 값이 'Y'일 때입니다.
  • 반대로, 참이 아닌 경우는,
    • column_name 값이 NULL일 때 (비교 자체가 불가능하므로 제외되므로 포함해야 함)
    • 또는 column_name 값이 'Y'가 아닐 때입니다.

최종 쿼리 전체 예시

SELECT * 
FROM table_name
WHERE column_name IS NULL 
   OR column_name <> 'Y';

이 쿼리는 'Y'가 아닌 값과 NULL 값을 모두 포함하게 됩니다.

참고사항

해당 컬럼이 무조건 Y 또는 N 으로 이루어진 경우, 'Y'의 반대가 'N'일 수도 있어요.

해당 컬럼이 Not Null인 경우, 'Y'의 반대는 <> 'Y' 일 수도 있어요.

이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗