Cómo utilizar el sql expresiones case NULLIF y unirse
La única cosa que usted puede estar seguro de en este mundo es el cambio. Por suerte, SQL representa esto. La termodinámica clásica y la teoría del caos moderno ambos indican que los sistemas migran naturalmente de un estado ordenado conocido en un estado desordenado que nadie puede predecir. Cualquier persona que ha supervisado siempre el estado de la habitación de un adolescente por un período de una semana después de la habitación se limpia puede dar fe de estas teorías.
Tablas de bases de datos tienen valores definidos en los campos que contengan contenidos conocidos. Por lo general, si se desconoce el valor de un campo, el campo contiene el valor nulo. En SQL, puede utilizar un CASO expresión para cambiar el contenido de un campo de tabla de un valor definido en un valor nulo. El valor nulo indica que ya no sabes el valor del campo. Considere el siguiente ejemplo.
Imagine que usted es dueño de una pequeña aerolínea que ofrece vuelos entre el sur de California y el estado de Washington. Hasta hace poco, algunos de sus vuelos se detuvieron en el Aeropuerto Internacional de San José para abastecerse de combustible antes de continuar. Desafortunadamente, usted acaba de perder su derecho a volar a San José. A partir de ahora, debe detener su repostaje, ya sea en el aeropuerto internacional de San Francisco o el aeropuerto internacional de Oakland.
En este punto, usted no sabe qué vuelos se detiene en qué aeropuerto, pero usted sabe que ninguno de los vuelos están parando en San José. Usted tiene una base de datos de vuelo que contiene información importante sobre sus rutas, y ahora desea actualizar la base de datos para eliminar todas las referencias a San José. El siguiente ejemplo muestra una manera de hacer esto:
ACTUALIZACIÓN FLIGHTSET RefuelStop = CASEWHEN RefuelStop = 'San Jose'THEN NULLELSE RefuelStopEND -
Porque ocasiones como ésta - en los que desea reemplazar un valor conocido con un valor nulo - surgen con frecuencia, SQL ofrece una notación abreviada para realizar esta tarea. El ejemplo anterior, expresó en esta forma abreviada, se ve así:
ACTUALIZACIÓN FLIGHTSET RefuelStop = NULLIF (RefuelStop, 'San José') -
Puedes traducir esta expresión para Inglés como, " Actualización de la tabla VUELO estableciendo la RefuelStop columna a NULL si el valor actual de RefuelStop es 'San José'. De lo contrario no hacer ningún cambio ".
NULLIF es aún más práctico si va a convertir datos que originalmente acumulado para su uso con un programa escrito en un lenguaje de programación estándar como C ++ o Java. Lenguajes de programación estándar no tienen valores nulos, por lo que una práctica común es utilizar valores especiales para representar el concepto de " no se conoce " o " no aplicable # 148 ;.
Un numérica -1 puede representar un valor no conocido para SALARIO, por ejemplo, y una cadena de caracteres " *** " puede representar un valor no conocido o no aplicable para CÓDIGO DE TRABAJO. Si desea representar estos estados no-conocidos y no-aplicables en una base de datos compatible con SQL mediante el uso de valores nulos, hay que convertir los valores especiales para los nulos. El siguiente ejemplo hace esta conversión para una tabla de empleados, en la que algunos valores salariales son desconocidos:
ACTUALIZACIÓN EMPSET Salario = CASE SalaryWHEN -1 ENTONCES NULLELSE SalaryEND -
Puede llevar a cabo esta conversión más convenientemente mediante el uso de NULLIF, como sigue:
ACTUALIZACIÓN EMPSET Salario = NULLIF (Salario, -1) -
COALESCE, como NULLIF, es una forma abreviada de un particular, CASO expresión. COALESCE trata de una lista de valores que pueden o no pueden ser nulos. Así es como funciona:
Si uno de los valores de la lista no es nula: los COALESCE expresión adquiere ese valor.
Si más de un valor en la lista no es nulo: La expresión toma el valor del primer elemento no nulo en la lista.
Si todos los valores de la lista son nulos: La expresión toma el valor nulo.
LA CASO expresión con esta función tiene la siguiente forma:
CASEWHEN valor1 NO ES NULLTHEN value1WHEN valor2 NO ES valor2 NULLTHEN ... CUANDO valorn NO SE valor NULLTHENnNULLEND ELSE
El correspondiente COALESCE taquigrafía se ve así:
COALESCE (valor1, valor2, ..., valorn)
Es posible que desee utilizar un COALESCE expresión después de realizar una OUTER JOIN operación. En esos casos, COALESCE le puede ahorrar una gran cantidad de mecanografía.