19 febrero 2019

Utilizar if en una consulta sql en Oracle


 A veces como programadores nos vemos en la tesitura de lanzar una única consulta sql en la que en función del un dato recibimos tenemos que generar otro distinto. Para ello tenemos la expresión CASE.

CASE funciona como un if dentro de una consulta sql en la que podemos indicar un valor de salida en caso de que la expresión sea verdadera y otra en caso que sea falsa.

Como ejemplo vamos a ver cómo generar un código en base a la primera letra del sexo y las dos primeras letra del nombre, apellido1 y apellido2 cambiando el código generado en base al valor del sexo.

Tabla inicial

indice
nombre
ape1
ape2
sexo
1
lisensiado
andrade
garcia
Hombre
2
fedora
maroto
distro
Mujer
3
linux
perez
soldado
Hombre
4
vista
windows
teclada
Mujer


Consulta case:


select  indice
(case when substr(sexo,1,1)='H' then '00' case when substr(sexo,1,1)='M' then '01' end)
|| substr(ape1,1,2)
|| substr(ape1,1,2)
|| substr(ape1,1,2)
as codigonuevo
from personal;

Resultado Final

Indice codigonuevo
1
00lianga
2
11femadi
3
00lipeso
4
11viwite

No hay comentarios: