sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona SQLite Nullif()

El nullif() de SQLite La función es una función útil que le permite tratar ciertos valores como NULL cuando sea necesario.

No debe confundirse con ifnull() función, que hace lo contrario:le permite tratar los valores NULL como algo más.

El nullif() La función acepta dos argumentos y devuelve su primer argumento si los argumentos son diferentes y NULL si los argumentos son los mismos.

Sintaxis

La sintaxis es así:

nullif(X,Y)

La función busca en sus argumentos de izquierda a derecha un argumento que defina una función de clasificación y utiliza esa función de clasificación para todas las comparaciones de cadenas. Si ninguno de los argumentos define una función de clasificación, entonces se usa BINARIO.

Ejemplo

Aquí hay un ejemplo básico para demostrarlo.

SELECT 
  nullif(123,0),
  nullif(0,0),
  nullif(123,123);

Resultado:

nullif(123,0)  nullif(0,0)  nullif(123,123)
-------------  -----------  ---------------
123                                        

En la primera columna, los dos valores son diferentes, por lo que se devuelve el primer valor.

En la segunda columna, ambos valores son iguales, por lo que se devuelve NULL.

Lo mismo es cierto para la tercera columna:ambos valores son iguales, por lo que se devuelve NULL.

Un ejemplo práctico

Aquí hay un ejemplo de base de datos que demuestra un uso más práctico para nullif() función.

Tome la siguiente tabla llamada Productos :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Stick   89.75     
3           Foo Cap        11.99     
4           Free Widget    0.0       
5           Free Foobar    0.0       
6           Free Beer                

Podemos ver que dos productos tienen un precio de cero. Otro producto tiene un precio NULO.

Ahora, imagina que queremos saber cuántos productos tienen un precio positivo. En otras palabras, no queremos incluir productos que tienen un precio o cero (o NULL para el caso).

Para hacer esto, podemos usar nullif() junto con count() función.

SELECT count(nullif(Price, 0.00)) 
FROM Products;

Resultado:

3

Obtenemos 3 como se esperaba, que es exactamente cuántas filas tienen un valor positivo en el Precio columna.

Esto funciona porque count() La función solo cuenta valores no NULL. Al convertir las cantidades cero a NULL, podemos ignorar esos valores en nuestro cálculo.

Aquí está de nuevo sin nullif() función.

SELECT count(Price) 
FROM Products;

Resultado:

5

Entonces, en este caso, incluye las cantidades cero y obtenemos 5. Todavía ignora la fila 6 porque en realidad tiene un valor NULL.