Articles

Ejemplos de consultas SQL SELECT sin distinción de mayúsculas y minúsculas

Posted on

Consultas SQL sin distinción de mayúsculas y minúsculas SELECT: ¿Cómo puedo emitir consultas SQL SELECT ignorando las mayúsculas y minúsculas?

Antecedentes

Cuando empecé a escribir consultas SQL utilizaba Postgresql, y usaba algunas de sus capacidades de expresiones regulares personalizadas para realizar consultas sin distinción de mayúsculas y minúsculas. Eso parecía una buena idea en ese momento, pero cuando traté de mover mi aplicación a una base de datos MySQL, una parte de mi aplicación ya no funcionaba. Después de un poco de depuración recordé que había utilizado las capacidades de consulta específicas de Postgreql, así que tuve que reescribir esa parte del código para que funcionara con MySQL.

Para ahorrarle algo de ese dolor, los siguientes ejemplos muestran cómo escribir consultas SQL SELECT que no distinguen mayúsculas de minúsculas utilizando la sintaxis estándar de SQL. Las consultas mostradas deberían funcionar con la mayoría, si no todas, las bases de datos compatibles con SQL 92.

Una advertencia muy importante

Tenga en cuenta que hay una cosa MUY IMPORTANTE que decir sobre el enfoque mostrado:

Estas consultas obligan a su base de datos a realizar una exploración de la tabla. Esto significa que si tienes un índice en la columna que estás buscando, ese índice no se utilizará. Así que si tienes mil millones de registros en tu tabla, este enfoque obligará a la base de datos a buscar en todos los mil millones de registros. Obviamente, esta es una advertencia muy importante que debes tener en cuenta.

No publico comentarios de personas que utilizan un lenguaje despectivo, pero como una persona escribió en los comentarios (entre insultos), «usar una función para convertir una columna entera de datos requiere un escaneo de la tabla y debería evitarse en una cláusula WHERE

Seleccionar SQL sin distinguir entre mayúsculas y minúsculas: Utilizar funciones superiores o inferiores

La forma estándar de SQL para realizar consultas sin distinción de mayúsculas y minúsculas es utilizar las funciones SQL upper o lower, así:

select * from users where upper(first_name) = 'FRED';

o esto:

select * from users where lower(first_name) = 'fred';

Como puedes ver, el patrón es hacer que el campo en el que buscas esté en mayúsculas o minúsculas, y luego hacer que tu cadena de búsqueda también esté en mayúsculas o minúsculas para que coincida con la función SQL que has utilizado. Esto funciona con todas las bases de datos SQL que he utilizado, incluyendo Postgresql, MySQL y SQL Server.

Consultas SQL LIKE

También puedes utilizar la misma técnica para hacer que tus consultas SQL LIKE no distingan entre mayúsculas y minúsculas. Así es como se utiliza la función de mayúsculas con una consulta SQL LIKE:

select * from users where upper(first_name) like '%AL%';

y aquí está la misma consulta SQL LIKE que no distingue entre mayúsculas y minúsculas utilizando la función SQL lowercase:

select * from users where lower(first_name) like '%al%';

Resumen

Espero que estos ejemplos de consultas SQL SELECT sin distinción de mayúsculas y minúsculas sean útiles. De nuevo, el truco está en convertir lo que busques a mayúsculas o minúsculas usando las funciones SQL upper y lower, y luego hacer que tu cadena de búsqueda coincida con ese caso.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *