mysql

Más ejercicios resueltos de MySQL: Combinando funciones

Introducción

Esta es la tercera parte de unos posts que vengo escribiendo sobre ejercicios propuestos de MySQL. Ahora veremos cómo combinar algunas funciones que vimos en los otros tutoriales. Son pocos, pero al principio son difíciles.

Ejercicios con solución

Tabla

Recordemos que vamos a estar utilizando esta tabla para todos los ejercicios:

See the gist on github.

Nota: no es la misma tabla que antes, ya que a ésta la hemos modificado de tal manera que a algunos usuarios se les asignó un segundo nombre, mismo que será de utilidad para los ejercicios.

Una vez dicho eso, vamos allá.

Listar el primer nombre de todos los usuarios

Seleccionar el primer nombre de los usuarios. En caso de que tengan sólo un nombre lo seleccionamos. En caso de que tengan dos, seleccionamos el primero. Casos de uso:

JOSE RAÚL => JOSE

OSCAR => OSCAR

Solución

See the gist on github.

Utilizamos INSTR, que devuelve la posición que tiene una subcadena dentro de una cadena. Recordemos que si dicha subcadena no se encuentra, el resultado al llamar la función es 0. Sabiendo esto, utilizamos IF para ver si la posición es 0.

Si la posición es 0, significa que no había espacios; es decir, que la persona sólo tiene un nombre. En caso de que no sea 0, cortamos la cadena con LEFT.

Listar el segundo nombre de los usuarios, y listar el primero en caso de que no lo tengan

Ahora hagamos lo contrario si así se le puede llamar. Listar el segundo nombre del usuario en caso de que éste tenga, y si no, pues listamos sólo el primero. Los casos de uso:

JOSE RAÚL => RAÚL

OSCAR => OSCAR

PD: ya sé que JOSÉ lleva acento pero así estaba en la base de datos y me dio pereza arreglarlo; además, no afecta.

Rápidamente nuestra mente nos traicionará y dirá: cambia sólo LEFT por RIGHT en la consulta anterior, y listo.

Pero no, no es así. Esto requiere un poco más de concentración. Si sólo cortamos con RIGHT desde donde está el espacio, cortará la cadena “invertida” y nos dará un nombre como “E RAÚL” (suponiendo que es JOSE RAÚL).

Recordemos que LEFT funcionó porque comienza a contar caracteres al igual que INSTR. Es decir, ambos cuentan desde la izquierda. Así que si usamos el mismo índice para ambos todo irá bien. En cambio, RIGHT comienza a contar desde la derecha.

La solución es simple, utilizamos RIGHT pero lo combinamos con CHAR_LENGTH para que reste la posición del índice.

Queda así:

See the gist on github.

Otra solución

La solución que utiliza RIGHT con CHAR_LENGTH fue la que se me ocurrió a mí, pero siempre hay muchas formas de hacer las cosas. Un amigo lo hizo con MID y a mi parecer quedó más elegante. Aquí dejo la consulta:

See the gist on github.

Listar los nombres de los usuarios que comiencen con una letra vocal

See the gist on github.

Para esto utilizamos LIKE y el comodín %, dicho comodín quiere decir “cualquier cosa” así que con que comiencen con A, E, I, O, U y terminen con lo que sea estarán bien.

Listar los nombres de los usuarios que finalicen con una letra vocal

See the gist on github.

Utilizamos de nuevo el comodín % pero ahora al revés, de manera que al principio tengan cualquier cosa pero que siempre terminen con alguna vocal.

Listar los nombres de los usuarios que tengan la letra A u O intermedias

See the gist on github.

Ahora utilizamos el comodín pero 2 veces, así: %%. De esta forma indicamos que pueden tener lo que sea a la izquierda así como a la derecha, mientras tengan la letra mencionada en alguna parte del centro.

Listar los nombres de los usuarios que no utilicen correo electrónico de Microsoft (Outlook, Hotmail, live)

See the gist on github.

Para terminar, usamos un NOT combinado con LIKE.  Los utilizamos 3 veces para descartar opciones de outlook, hotmail  y live.

Conclusión

Con esos ejercicios terminamos hoy.

Aquí hay más:

Ejercicios resueltos de consultas con MySQL

Ejercicios resueltos con MySQL: Funciones de cadena, UPDATE y DELETE

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

5 días hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

5 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

6 días hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.