- Categorias:
EQUAL_NULL¶
Compara se duas expressões são iguais. A função é NULL-safe, ou seja, trata NULLs como valores conhecidos para comparar a igualdade. Observe que isso é diferente do EQUAL operador de comparação (=
), que trata NULLs como valores desconhecidos.
- Consulte também:
Sintaxe¶
EQUAL_NULL( <expr1> , <expr2> )
Notas de uso¶
O valor retornado depende se algum dos inputs são valores NULL:
- Retorna TRUE:
EQUAL_NULL( <nulo> , <nulo> )
- Retorna FALSE:
EQUAL_NULL( <nulo> , <não_nulo> )
EQUAL_NULL( <não_nulo> , <nulo> )
Caso contrário:
EQUAL_NULL(<expr1>, <expr2>)
é equivalente a<expr1> = <expr2>
Para obter mais detalhes, consulte os exemplos abaixo.
Detalhes do agrupamento¶
The collation specifications of all input arguments must be compatible.
The comparisons follow the collation based on the input arguments” collations and precedences.
Exemplos¶
Criar uma tabela com dados simples:
CREATE OR REPLACE TABLE x (i number); INSERT INTO x values (1), (2), (null);
Mostrar o produto cartesiano gerado ao unir a tabela a si mesma sem filtro:
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 | +------+------+
Retornar linhas que contenham apenas valores iguais para ambas as colunas:
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 | +------+------+
Retornar linhas que contenham apenas valores iguais ou valores NULL para ambas as colunas:
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 | +------+------+
Ilustrar todos os resultados possíveis para EQUAL (=
) e 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 | +------+------+-----------+---------------------+------------+----------------------+
Ilustrar todos os resultados possíveis para EQUAL_NULL e 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 | +------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------+