PostgreSQL ILIKE
El operador ILIKE en PostgreSQL es una versión del operador LIKE que no distingue entre mayúsculas y minúsculas y que se utiliza para la concordancia de patrones en las consultas SQL. Te permite buscar un patrón especificado en una cadena, ignorando las distinciones entre mayúsculas y minúsculas. Ten en cuenta que ILIKE es específico de PostgreSQL y puede no estar disponible en otros entornos SQL.
Utilización
El operador ILIKE es útil cuando necesitas realizar coincidencias de patrones sin distinguir mayúsculas de minúsculas en operaciones de comparación de cadenas. Se utiliza a menudo en las cláusulas WHERE para filtrar los resultados en función de un patrón, independientemente del caso.
SELECT column1, column2, ...
FROM table_name
WHERE column_name ILIKE pattern;
En esta sintaxis, column_name ILIKE pattern especifica la columna en la que buscar y el patrón que debe coincidir, y la búsqueda no distingue entre mayúsculas y minúsculas. Ten en cuenta que los resultados pueden variar en función de las codificaciones de caracteres y las colaciones, especialmente en bases de datos multilingües.
Ejemplos
1. Coincidencia básica sensible a mayúsculas y minúsculas
SELECT *
FROM employees
WHERE first_name ILIKE 'john';
Este ejemplo recupera todas las filas de la tabla employees en las que la columna first_name coincide con "juan" sin distinguir mayúsculas de minúsculas, como "Juan", "juan" o "JUAN".
2. Uso de comodines
SELECT *
FROM products
WHERE product_name ILIKE '%apple%';
Aquí, la consulta busca cualquier aparición de "manzana" dentro de la columna product_name, independientemente de mayúsculas y minúsculas, permitiendo coincidencias como "Manzana verde", "manzana" o "tarta de MANZANA".
3. Concordancia de patrones complejos
SELECT *
FROM orders
WHERE order_description ILIKE 'order #%_';
Este ejemplo utiliza los comodines guión bajo (_) y signo de porcentaje (%) para coincidir con cualquier carácter individual y cualquier secuencia de caracteres, respectivamente, lo que lo hace útil para coincidencias de patrones más complejas ignorando mayúsculas y minúsculas.
Consejos y buenas prácticas
- Utilízalo con prudencia para mejorar el rendimiento.
ILIKEpuede ser más lento queLIKEdebido a que no distingue entre mayúsculas y minúsculas, así que utilízalo sólo cuando sea necesario. - Combinar con índices. Si es posible, utiliza índices funcionales con
LOWER()para mejorar el rendimiento en grandes conjuntos de datos cuando utilicesILIKE. Por ejemplo:CREATE INDEX idx_lower_first_name ON employees (LOWER(first_name)); - Ten en cuenta la configuración regional. El rendimiento puede variar según la configuración regional y la codificación de caracteres.
- Optimiza el uso de patrones. Utiliza patrones específicos para minimizar el alcance de la búsqueda y mejorar la velocidad de consulta. Si es posible, evita empezar los patrones con comodines.
- Considera la posibilidad de utilizar el módulo
citext. Para las aplicaciones que requieren una comparación frecuente de texto sin distinción entre mayúsculas y minúsculas, el módulocitextproporciona un tipo de texto sin distinción entre mayúsculas y minúsculas. - Consideraciones sobre la versión. Aunque no hay grandes diferencias en el comportamiento de
ILIKEentre las distintas versiones de PostgreSQL, consulta siempre las notas de la versión para ver si hay actualizaciones menores o correcciones de errores.