카테고리:

조건식 함수

EQUAL_NULL

두 식이 같은지 비교합니다. 이 함수는 NULL에 대해 안전합니다. 즉, NULL을 같음을 비교하기 위해 알려진 값으로 취급합니다. 이는 EQUAL 비교 연산자 (=)와는 다릅니다. 해당 연산자는 NULL을 알 수 없는 값으로 처리합니다.

참고 항목

IS [ NOT ] DISTINCT FROM

구문

EQUAL_NULL( <expr1> , <expr2> )
Copy

사용법 노트

  • 반환되는 값은 입력이 NULL 값인지 여부에 따라 다릅니다.

    TRUE 반환
    EQUAL_NULL( <null> , <null> )
    FALSE 반환
    EQUAL_NULL( <null> , <null_아님> )
    EQUAL_NULL( <null_아님> , <null> )

    그렇지 않은 경우:

    EQUAL_NULL(<식1>, <식2>)<식1> = <식2> 와 동일합니다.

자세한 내용은 아래의 예를 참조하십시오.

데이터 정렬 세부 정보

  • The collation specifications of all input arguments must be compatible.

  • The comparisons follow the collation based on the input arguments〉 collations and precedences.

간단한 데이터로 테이블을 만듭니다.

CREATE OR REPLACE TABLE x (i number);
INSERT INTO x values
    (1), 
    (2), 
    (null);
Copy

필터 없이 테이블 자체를 조인하여 생성된 데카르트 곱을 표시합니다.

SELECT x1.i x1_i, x2.i x2_i 
    FROM x x1, x x2
    ORDER BY x1.i, x2.i;
+------+------+
| X1_I | X2_I |
|------+------|
|    1 |    1 |
|    1 |    2 |
|    1 | NULL |
|    2 |    1 |
|    2 |    2 |
|    2 | NULL |
| NULL |    1 |
| NULL |    2 |
| NULL | NULL |
+------+------+
Copy

두 열에 대해 동일한 값만 포함하는 행을 반환합니다.

SELECT x1.i x1_i, x2.i x2_i 
    FROM x x1, x x2 
    WHERE x1.i=x2.i;
+------+------+
| X1_I | X2_I |
|------+------|
|    1 |    1 |
|    2 |    2 |
+------+------+
Copy

두 열에 대해 동일한 값 또는 NULL 값만 포함하는 행을 반환합니다.

SELECT x1.i x1_i, x2.i x2_i 
    FROM x x1, x x2 
    WHERE EQUAL_NULL(x1.i,x2.i);
+------+------+
| X1_I | X2_I |
|------+------|
|    1 |    1 |
|    2 |    2 |
| NULL | NULL |
+------+------+
Copy

EQUAL (=) 및 NOT EQUAL (<>)에 대해 가능한 모든 결과를 보여줍니다.

SELECT x1.i x1_i, 
       x2.i x2_i,
       x1.i=x2.i, 
       iff(x1.i=x2.i, 'Selected', 'Not') "SELECT IF X1.I=X2.I",
       x1.i<>x2.i, 
       iff(not(x1.i=x2.i), 'Selected', 'Not') "SELECT IF X1.I<>X2.I"
    FROM x x1, x x2;
+------+------+-----------+---------------------+------------+----------------------+
| X1_I | X2_I | X1.I=X2.I | SELECT IF X1.I=X2.I | X1.I<>X2.I | SELECT IF X1.I<>X2.I |
|------+------+-----------+---------------------+------------+----------------------|
|    1 |    1 | True      | Selected            | False      | Not                  |
|    1 |    2 | False     | Not                 | True       | Selected             |
|    1 | NULL | NULL      | Not                 | NULL       | Not                  |
|    2 |    1 | False     | Not                 | True       | Selected             |
|    2 |    2 | True      | Selected            | False      | Not                  |
|    2 | NULL | NULL      | Not                 | NULL       | Not                  |
| NULL |    1 | NULL      | Not                 | NULL       | Not                  |
| NULL |    2 | NULL      | Not                 | NULL       | Not                  |
| NULL | NULL | NULL      | Not                 | NULL       | Not                  |
+------+------+-----------+---------------------+------------+----------------------+
Copy

EQUAL_NULL 및 NOT(EQUAL_NULL)에 대해 가능한 모든 결과를 보여줍니다.

SELECT x1.i x1_i, 
       x2.i x2_i,
       equal_null(x1.i,x2.i), 
       iff(equal_null(x1.i,x2.i), 'Selected', 'Not') "SELECT IF EQUAL_NULL(X1.I,X2.I)",
       not(equal_null(x1.i,x2.i)), 
       iff(not(equal_null(x1.i,x2.i)), 'Selected', 'Not') "SELECT IF NOT(EQUAL_NULL(X1.I,X2.I))"
    FROM x x1, x x2;
+------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------+
| X1_I | X2_I | EQUAL_NULL(X1.I,X2.I) | SELECT IF EQUAL_NULL(X1.I,X2.I) | NOT(EQUAL_NULL(X1.I,X2.I)) | SELECT IF NOT(EQUAL_NULL(X1.I,X2.I)) |
|------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------|
|    1 |    1 | True                  | Selected                        | False                      | Not                                  |
|    1 |    2 | False                 | Not                             | True                       | Selected                             |
|    1 | NULL | False                 | Not                             | True                       | Selected                             |
|    2 |    1 | False                 | Not                             | True                       | Selected                             |
|    2 |    2 | True                  | Selected                        | False                      | Not                                  |
|    2 | NULL | False                 | Not                             | True                       | Selected                             |
| NULL |    1 | False                 | Not                             | True                       | Selected                             |
| NULL |    2 | False                 | Not                             | True                       | Selected                             |
| NULL | NULL | True                  | Selected                        | False                      | Not                                  |
+------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------+
Copy