오라클 데이터베이스에서 WHERE column_name = 'Y'의 반대 조건을 명확하게 표현하려면 아래와 같이 작성할 수 있어요.
WHERE column_name IS NULL
OR column_name <> 'Y'
이유
- NULL 포함 필요
NULL 값은 비교 연산에서 제외되기 때문에, 반대 조건을 작성할 때 반드시IS NULL조건을 추가해야 합니다. <>사용<> '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' 일 수도 있어요.
