sql >> Base de Datos >  >> RDS >> Oracle

Equivalente de Oracle ISNULL()

La mayoría de los principales DBMS nos brindan una función para reemplazar valores nulos con otro valor.

Pero el nombre de la función tiende a diferir entre los DBMS. Por ejemplo, SQL Server tiene un ISNULL() función, mientras que otros (como MySQL, MariaDB y SQLite) tienen un IFNULL() función para hacer lo mismo.

Sin embargo, para confundir las cosas, MySQL y MariaDB tienen cada uno un ISNULL() función que funciona de manera diferente a la función de SQL Server del mismo nombre (la implementación de MySQL y MariaDB solo acepta un único argumento y devuelve 1 si es null y 0 si no lo es).

De todos modos, en el caso de Oracle Database, podemos usar el NVL() función para reemplazar valores nulos con otro valor.

En realidad, Oracle Database también tiene un NVL2() función que nos permite proporcionar otro valor para usar en caso de que el primer argumento no sea null .

Si simplemente queremos probar si un valor es null o no, podemos usar el IS NULL condición (o el IS NOT NULL para la prueba opuesta).

El NVL() Función

Aquí hay un ejemplo que demuestra cómo NVL() la función funciona:

SELECT NVL(null, 'Run')
FROM DUAL;

Resultado:

Run

En ese caso, el primer argumento fue null y así se devolvió el segundo argumento.

Esto es lo que sucede cuando el primer argumento no es null :

SELECT NVL('Walk', 'Run')
FROM DUAL;

Resultado:

Walk

Se devuelve el primer argumento.

El NVL2() Función

Como se mencionó, Oracle Database también nos proporciona el NVL2() función. Esta función nos permite proporcionar otro valor para usar en caso de que el primer argumento no sea null .

He aquí un ejemplo de cómo funciona:

SELECT NVL2(null, 2, 3)
FROM DUAL;

Resultado:

3

El primer argumento fue null y así se devolvió el tercer argumento.

Esto es lo que sucede cuando el primer argumento no es null :

SELECT NVL2(1, 2, 3)
FROM DUAL;

Resultado:

2

Se devuelve el segundo argumento.

El IS NULL y IS NOT NULL Condiciones

Si solo queremos saber si un valor es o no null , podemos usar IS NULL condición de comparación. Alternativamente, podemos usar IS NOT NULL para comprobar si no es null .

Supongamos que tenemos la siguiente tabla:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultado:

ID OE# PRECIO MODELO
2 62150B3278 CAMRY
1 62150A3278 168 HILUX

En este caso, el PRICE columna contiene un valor nulo para la primera fila, pero no para la segunda fila.

Aquí hay un ejemplo del uso de IS NULL contra esa mesa:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultado:

ID OE# PRECIO MODELO
2 62150B3278 CAMRY

Solo se devuelve la fila con el precio nulo.

Esto es lo que sucede cuando usamos IS NOT NULL :

SELECT * FROM Autoparts
WHERE Price IS NOT NULL;

Resultado:

ID OE# PRECIO MODELO
1 62150A3278 168 HILUX

Se devuelve la otra fila.