- Arawn's Dev Blog
- Outsider's Dev Story
- Toby's Epril
- Benelog
- NHN 개발자 블로그
- SK 플래닛 기술 블로그
- OLC CENTER
- 소프트웨어 경영/공학 블로그
- 모바일 컨버전스
- KOSR - Korea Operating System …
- 넥스트리 블로그
- 리버스코어 ReverseCore
- SLiPP
- 개발자를 위하여... (Nextree 임병인 수석)
- "트위터 부트스트랩: 디자이너도 놀라워할 매끈하고 직관…
- Learning English - The English…
- real-english.com
- 'DataScience/Deep Learning' 카테…
- Deep Learning Summer School, M…
- Deep Learning Courses
민서네집
다른 DBMS와 다른 Oracle의 NULL 본문
NULL에 관해서 Oracle에서는 다른 DBMS와 다른 점이 있다.
대부분의 프로그래밍 언어에서와는 달리, SQL에서는 NULL을 0이나 false 또는 빈 문자열과 다른 특별한 값으로 취급한다. 표준 SQL과 대부분의 데이터베이스 제품에서는 그렇다. 그러나 Oracle과 Sybase에서는 NULL이 길이가 0인 문자열과 동일하다.
- (옮긴이 주석) NULL을 문자열 데이터로 취급할 때 그렇다는 뜻이다. 숫자 타입이나 날짜 타입에서는 다른 DBMS와 마찬가지다.
NULL은 0과 같지 않다. 알지 못하는 값에 10을 더한다 해도 여전히 알지 못하는 값이다.
NULL은 길이가 0인 문자열과도 같지 않다. 표준 SQL에서는 어떤 문자열도 NULL과 연결하면 NULL이 된다. (Oracle과 Sybase는 예외)
또한 SQL-99 표준에서는 IS DISTINCT FROM이란 또 다른 비교연산자가 정의되었는데, 일반 비교 연산자인 <>와 비슷하게 동작한다. 다른 점은 피연산자가 NULL이더라도 항상 true 또는 false를 리턴한다는 것이다.
다음 두 쿼리는 동일하다.
SELECT * FROM Bugs WHERE assigned_to IS NULL OR assigned_to <> 1;
SELECT * FROM Bugs WHERE assigned_to IS DISTINCT FROM 1;
IS DISTINCT FROM 지원은 데이터베이스 제품마다 다르다. PostgreSQL, IBM DB2, Firebird는 이를 지원하지만, Oracle과 Microsoft SQL Server는 아직 지원하지 않는다. MySQL은 IS DISTINCT FROM처럼 동작하는 전용 연산자 <=>를 제공한다.
[출처] SQL AntiPatterns, 2011, 인사이트, 빌 카윈 지음 - 14장 모르는 것에 대한 두려움
'Database > Oracle' 카테고리의 다른 글
Oracle 12c 다운로드 받는 방법 (0) | 2022.01.21 |
---|---|
[Oracle] 공백 제거하기 (0) | 2019.12.03 |
[Oracle] OFFSET ROWS FETCH NEXT (0) | 2018.03.27 |
특정 테이블이 어느 계정에 속해있는지 조회하는 쿼리 (0) | 2017.11.17 |
Oracle Trigger mutating trigger 에러가 나는 경우 해결책 (0) | 2013.10.15 |