Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

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. ILIKE puede ser más lento que LIKE debido 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 utilices ILIKE. 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ódulo citext proporciona 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 ILIKE entre las distintas versiones de PostgreSQL, consulta siempre las notas de la versión para ver si hay actualizaciones menores o correcciones de errores.