수색…


소개

해당 열의 데이터 형식에 관계없이 값이 없으면 열이 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