A través de este post voy a ilustrar la función IF en MySQL; la cual funciona similar a los lenguajes de programación pero en forma de función; lo sé, es un poco complicado de decir pero verás que con los ejemplos quedará claro.
Nota: voy a explicar la función if en MySQL, no la sentencia. Me parece que MySQL también cuenta con la sentencia If pero eso es otra historia y se usa sobre todo en funciones, así que seguramente llegaste al post correcto.
If en MySQL
Como lo dije, esta es una función cuya forma básica es:
IF(condicion, enCasoDeQueSeCumpla, enCasoDeQueNo);
Si la condición (primer parámetro) se cumple, regresa el segundo parámetro; en caso de que no, el tercero.
Por lo tanto, la siguiente consulta:
select if(28 > 11, "Verdadero", "Falso");
Va a seleccionar la cadena “Verdadero
“, ya que 28 sí es mayor que 11.
Recuerda que la condición puede variar, y que debe dar al final un booleano.
Si quieres probar
Para probar estos ejercicios (aunque al final dejaré un enlace a un fiddle) puedes instalar MySQL con PHP en tu PC; y ver este tutorial de los primeros pasos con MySQL.
En caso de que ya conozcas un poco, puedes omitir los posts recomendados. Al final del post dejaré ejercicios con MySQL.
Ejemplo con datos reales
Veamos otro ejemplo, pero para ello vamos a crear una tabla de personas:
create table personas(
nombre varchar(255),
apellido_paterno varchar(255),
apellido_materno varchar(255),
edad int
);
insert into personas
values
('Luis', 'Cabrera', 'Benito', 21),
('Hank', 'Rearden', 'Lecter', 15),
('Elliot', 'Alderson', 'Mercury', 18),
('Walter', 'White', 'Taggart', 12);
Para demostrar el uso de IF, vamos a hacer que se ponga un mensaje de “Menor de edad” o “mayor de edad” usando If en MySQL; la consulta queda así:
select nombre, edad, if(edad >= 18, "Mayor de edad", "Menor de edad") as estado
from personas;
La salida es la siguiente, en donde cuando la edad es menor que 18 se muestra “Menor de edad” y cuando no, “mayor de edad”:
Además de seleccionar simples cadenas, podemos seleccionar campos. Por ejemplo, si es mayor de edad vamos a mostrar el apellido paterno y si no, el materno.
La consulta queda así:
select nombre,
edad,
apellido_paterno,
apellido_materno,
if(edad >= 18, apellido_paterno, apellido_materno) as apellido
from personas;
Con la siguiente salida:
Oh, por cierto, estoy utilizando la sentencia AS para “renombrar” la columna del if
.
Condición como resultado de una función
La función If recibe parámetros, pero dichos parámetros pueden ser obtenidos de otras funciones.
Por ejemplo, veamos este ejemplo en donde mostramos un mensaje dependiendo de la letra con la que empieza el nombre; para comparar la letra usamos la función LEFT
que corta en una cadena determinado número de caracteres.
select nombre,
if(left(nombre, 1) = "L", "Empieza con L", "No empieza con L") as texto
from personas;
La salida es:
La condición que se evalúa viene de llamar a otra función y comparar su resultado.
If anidado en MySQL
Para terminar el tutorial veamos cómo usar un “else if” en MySQL. Podemos anidar las funciones así:
If(condicion, if(otraCondicion, siSeCumple,siNoSecumple),siNoSeCumple );
Así
if(otraCondicion, siSeCumple,if(otraCondicion, siSeCumple,siNoSecumple));
Incluso así:
If(condicion, if(otraCondicion, siSeCumple,siNoSecumple),if(otraCondicion, siSeCumple,siNoSecumple));
Y dentro de cada if puede ir otro if, de manera infinita.
Voy a poner un ejemplo en donde si el nombre no empieza con “L” se compare si empieza con “W”. La consulta SQL queda así:
if(
left(nombre, 1) = "L",
"Empieza con L",
if(left(nombre, 1) = "W", "Empieza con W", "No empieza con L ni con W")
) as texto
from personas;
La comparación que se hace es: if empieza con L, muestra que empieza con L. En caso de que no, compara si comienza con W; en caso de que sí, muestra que comienza con W, y en caso de que no, muestra que no empieza con ninguna de las dos letras.
Dentro del “else” del segundo if podría ir otro if, y así sucesivamente.
Conclusión
Te invito a probar más combinaciones con consultas de MySQL; por cierto, todo lo desarrollado aquí se puede probar en este fiddle.
¿Quieres más sobre MySQL? mira estos ejercicios:
Ejercicios con consultas parte 1
Ejercicios con Funciones de cadena
Muy buena explicacion. sigan asi
Buen aporte hermano, saludos
Muy interesante esta entrada. Bueno y el blog.
Mil gracias por el trabajo.
Gracias por tus comentarios 🙂 te invito a seguirme en mis redes sociales