Oracle Database
NULL 값 처리
수색…
소개
해당 열의 데이터 형식에 관계없이 값이 없으면 열이 NULL입니다. 열이 구문 사용하여 NULL과 비교해서는 안
a = NULL
알 수없는 것입니다 결과로합니다. 대신 a IS NULL
또는 a IS NOT NULL
조건을 사용하십시오. NULL이 NULL과 같지 않습니다. null이 발생할 수있는 두 표현식을 비교하려면 아래에 설명 된 함수 중 하나를 사용하십시오. 연결을 제외한 모든 연산자는 피연산자 중 하나가 NULL이면 NULL을 반환합니다. 예를 들어, 3 * NULL + 5
의 결과는 널입니다.
비고
PRIMARY KEY 또는 NOT NULL 제약 조건으로 제한되는 열에는 NULL을 사용할 수 없습니다. (예외는 NOVALIDATE 절이있는 새로운 제약 조건 임)
모든 데이터 형식의 열에는 NULL이 포함될 수 있습니다.
SELECT 1 NUM_COLUMN, 'foo' VARCHAR2_COLUMN from DUAL
UNION ALL
SELECT NULL, NULL from DUAL;
NUM_COLUMN | VARCHAR2_COLUMN |
---|---|
1 | 푸 |
(없는) | (없는) |
빈 문자열은 NULL입니다.
SELECT 1 a, '' b from DUAL;
에이 | 비 |
---|---|
1 | (없는) |
NULL을 포함하는 작업은 연결을 제외하고는 NULL입니다.
SELECT 3 * NULL + 5, 'Hello ' || NULL || 'world' from DUAL;
3 * NULL + 5 | 'HELLO'|| NULL || 'WORLD' |
---|---|
(없는) | 안녕 세상 |
null 값을 대체 할 NVL
SELECT a column_with_null, NVL(a, 'N/A') column_without_null FROM
(SELECT NULL a FROM DUAL);
COLUMN_WITH_NULL | COLUMN_WITHOUT_NULL |
---|---|
(없는) | N / A |
NVL은 NULL을 포함 할 수있는 두 값을 비교하는 데 유용합니다.
SELECT
CASE WHEN a = b THEN 1 WHEN a <> b THEN 0 else -1 END comparison_without_nvl,
CASE WHEN NVL(a, -1) = NVL(b, -1) THEN 1 WHEN NVL(a, -1) <> NVL(b, -1) THEN 0 else -1 END comparison_with_nvl
FROM
(select null a, 3 b FROM DUAL
UNION ALL
SELECT NULL, NULL FROM DUAL);
COMPARISON_WITHOUT_NVL | COMPARISON_WITH_NVL |
---|---|
-1 | 0 |
-1 | 1 |
값이 널 (null)이거나 그렇지 않으면 NVL2가 다른 결과를 얻습니다.
첫 번째 매개 변수가 NOT NULL이면 NVL2는 두 번째 매개 변수를 반환합니다. 그렇지 않으면 세 번째 값이 반환됩니다.
SELECT NVL2(null, 'Foo', 'Bar'), NVL2(5, 'Foo', 'Bar') FROM DUAL;
NVL2 (NULL, 'FOO', 'BAR') | NVL2 (5, 'FOO', 'BAR') |
---|---|
바 | 푸 |
첫 번째 NULL이 아닌 값을 반환하는 COALESCE
SELECT COALESCE(a, b, c, d, 5) FROM
(SELECT NULL A, NULL b, NULL c, 4 d FROM DUAL);
골라서 (A, B, C, D, 5) |
---|
4 |
경우에 따라 두 개의 매개 변수가있는 COALESCE를 사용하면 두 번째 매개 변수가 상수가 아닌 경우 NVL을 사용하는 것보다 빠를 수 있습니다. NVL은 항상 두 매개 변수를 평가합니다. COALESCE는 첫 번째 NULL이 아닌 값에서 멈 춥니 다. 즉, 첫 번째 값이 NULL이 아니면 COALESCE가 빠릅니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow