Hace un tiempo me tope con una consulta en SQL a la cual debía añadir una decisión entonces pensé que seria muy bueno que existiera un if o un case para dicha tarea después de intentar generar una función y darme cuenta que el rendimiento disminuía demasiado entonces investigue un poco y me entere que en efecto dicha instrucción existía. con la siguiente sintaxis
SELECT CASE ("nombre_columna")
WHEN "condición1" THEN "resultado1"
WHEN "condición2" THEN "resultado2"
...
[ELSE "resultadoN"]
END
FROM "nombre_tabla"
Un ejemplo sencillo se usaría de la siguiente manera, se tiene una tabla persona se almacena el sexo en forma numérica y se desea mostrar al usuario.
Select nombre, case sexo when 1 then 'Masculino'
when 2 then 'Femenino'
Else 'Indefinido'
End
From persona
Luego en otra tarea me encontré que necesitaba una decisión en un campo que podría tener valores nulos, para escoger si el campo es nulo mostrar que fue generado por el sistema si el campo no es nulo mostrar el registro del usuario que había generado el registro, entonces recurrí al case y me di cuenta que me tiraba algunos errores cuales eran o me mostraba todos los campos null o me mostraba como si no existiese el select como lo resolví, busque de nuevo y encontre la funcion isnull.
ISNULL( columna_debusqueda,dato_dereemplazo)
Entonces en esa columna reemplaza todos los datos nulos con el datos_dereemplazo que le indicamos entonces por ejemplo
ISNull(RegistroIdentificacion,'No presento identificacion')
Para la columna RegistroIdentificacion reemplazara todos los datos Null por la cadena 'No presento identificacion'
esto lo hize para Sql server 2000
SELECT CASE ("nombre_columna")
WHEN "condición1" THEN "resultado1"
WHEN "condición2" THEN "resultado2"
...
[ELSE "resultadoN"]
END
FROM "nombre_tabla"
Un ejemplo sencillo se usaría de la siguiente manera, se tiene una tabla persona se almacena el sexo en forma numérica y se desea mostrar al usuario.
Select nombre, case sexo when 1 then 'Masculino'
when 2 then 'Femenino'
Else 'Indefinido'
End
From persona
Luego en otra tarea me encontré que necesitaba una decisión en un campo que podría tener valores nulos, para escoger si el campo es nulo mostrar que fue generado por el sistema si el campo no es nulo mostrar el registro del usuario que había generado el registro, entonces recurrí al case y me di cuenta que me tiraba algunos errores cuales eran o me mostraba todos los campos null o me mostraba como si no existiese el select como lo resolví, busque de nuevo y encontre la funcion isnull.
ISNULL( columna_debusqueda,dato_dereemplazo)
Entonces en esa columna reemplaza todos los datos nulos con el datos_dereemplazo que le indicamos entonces por ejemplo
ISNull(RegistroIdentificacion,'No presento identificacion')
Para la columna RegistroIdentificacion reemplazara todos los datos Null por la cadena 'No presento identificacion'
esto lo hize para Sql server 2000
Comentarios