¿Qué son los comodines de MySQL?
Los comodines de MySQL son caracteres que ayudan a buscar datos que coincidan con criterios complejos. Los comodines se utilizan junto con el operador de comparación LIKE o con el operador de comparación NOT LIKE.
¿Por qué utilizar WildCards?
Si está familiarizado con el uso de SQL, puede pensar que puede buscar cualquier dato complejo usando la cláusula SELECT y WHERE. Entonces, ¿por qué usar comodines?
Antes de responder a esa pregunta, veamos un ejemplo. Supongamos que el departamento de marketing de la videoteca de Myflix llevó a cabo promociones de marketing en la ciudad de Texas y le gustaría recibir comentarios sobre el número de miembros.
registrado en Texas, puede utilizar la siguiente declaración SELECT junto con la cláusula WHERE para obtener la información deseada.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Como puede ver en la consulta anterior, la "cláusula WHERE" se vuelve compleja. Sin embargo, el uso de comodines simplifica la consulta, ya que podemos usar algo simple como el script que se muestra a continuación.
SELECT * FROM members WHERE postal_address like '% TX';
En resumen, los comodines nos permiten desarrollar motores de búsqueda potentes en nuestras aplicaciones basadas en datos.
Tipos de comodines
% el porcentaje
% el carácter de porcentaje se utiliza para especificar un patrón de cero (0) o más caracteres . Tiene la siguiente sintaxis básica.
SELECT statements… WHERE fieldname LIKE 'xxx%';
AQUÍ
- "Sentencia SELECT ..." es el comando SELECT estándar de SQL.
- "DÓNDE" es la palabra clave utilizada para aplicar el filtro.
- "LIKE" es el operador de comparación que se utiliza junto con comodines
- 'xxx' es cualquier patrón de inicio especificado, como un solo carácter o más y "%" coincide con cualquier número de caracteres comenzando desde cero (0).
Para apreciar completamente la declaración anterior, veamos un ejemplo práctico
Supongamos que queremos obtener todas las películas que tienen la palabra "código" como parte del título, usaríamos el comodín de porcentaje para realizar una coincidencia de patrones en ambos lados de la palabra "código". A continuación se muestra la declaración SQL que se puede utilizar para lograr los resultados deseados.
SELECT * FROM movies WHERE title LIKE '%code%';
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los resultados que se muestran a continuación.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Tenga en cuenta que incluso si la palabra clave de búsqueda "código" aparece al principio o al final del título, todavía se devuelve en nuestro conjunto de resultados. Esto se debe a que nuestro código incluye cualquier número de caracteres al principio y luego coincide con el "código" del patrón seguido de cualquier número de caracteres al final.
Modifiquemos ahora nuestro script anterior para incluir el comodín de porcentaje al principio de los criterios de búsqueda únicamente.
SELECT * FROM movies WHERE title LIKE '%code';
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los resultados que se muestran a continuación.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Observe que solo se ha devuelto un registro de la base de datos. Esto se debe a que nuestro código coincide con cualquier número de caracteres al principio del título de la película y solo obtiene registros que terminan con el patrón "código".
Ahora cambiemos el comodín de porcentaje al final del patrón especificado que se va a hacer coincidir. El script modificado se muestra a continuación.
SELECT * FROM movies WHERE title LIKE 'code%';La ejecución del script anterior en MySQL workbench contra myflixdb nos da los resultados que se muestran a continuación.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Observe que solo se ha devuelto un registro de la base de datos. Esto se debe a que nuestro código coincide con todos los títulos que comienzan con el patrón "código" seguido de cualquier número de caracteres.
_ comodín de subrayado
El comodín de subrayado se utiliza para coincidir exactamente con un carácter . Supongamos que queremos buscar todas las películas que se estrenaron en los años 200x, donde x es exactamente un carácter que podría tener cualquier valor. Usaríamos el comodín de subrayado para lograrlo. El siguiente guión selecciona todas las películas que se estrenaron en el año "200x"
SELECT * FROM movies WHERE year_released LIKE '200_';
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los resultados que se muestran a continuación.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Tenga en cuenta que solo las películas que tienen 200 seguidos por cualquier personaje en el año de campo lanzado se han devuelto en nuestro conjunto de resultados. Esto se debe a que el comodín de subrayado coincide con el patrón 200 seguido de cualquier carácter individual
Diferente a
El operador lógico NOT se puede utilizar junto con los comodines para devolver filas que no coinciden con el patrón especificado.
Supongamos que queremos obtener películas que no se estrenaron en el año 200x. Usaríamos el operador lógico NOT junto con el comodín de subrayado para obtener nuestros resultados. A continuación se muestra el guión que hace eso.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
8 | Underworld-Awakeninh | Michahel Eal | 2012 | 6 |
Observe que solo las películas que no comienzan con 200 en el año de lanzamiento se han devuelto en nuestro conjunto de resultados. Esto se debe a que usamos el operador lógico NOT en nuestra búsqueda de patrones comodín.
Escape de la palabra clave.
La palabra clave ESCAPE se utiliza para escapar de los caracteres de coincidencia de patrones , como el porcentaje (%) y el subrayado (_) si forman parte de los datos.
Supongamos que queremos comprobar la cadena "67%" que podemos usar;
LIKE '67#%%' ESCAPE '#';
Si queremos buscar la película "67% culpable", podemos usar el guión que se muestra a continuación para hacerlo.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Tenga en cuenta el doble " %% " en la cláusula LIKE, el primero en rojo " % " se trata como parte de la cadena a buscar. El otro se usa para hacer coincidir cualquier número de caracteres que siguen.
La misma consulta también funcionará si usamos algo como
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Resumen
- Me gusta y comodines potentes herramientas que ayudan a buscar datos que coincidan con patrones complejos.
- Hay una serie de comodines que incluyen el porcentaje, el subrayado y la lista de caracteres (no compatible con MySQL), entre otros.
- El comodín de porcentaje se utiliza para hacer coincidir cualquier número de caracteres a partir de cero (0) y más.
- El comodín de subrayado se utiliza para hacer coincidir exactamente un carácter.