LIKE
El operador LIKE compara una expresión de cadena, como el nombre de una columna, con un patrón que usa caracteres comodines % (porcentaje) y _ (guion bajo). La coincidencia de patrones LIKE siempre cubre la cadena completa. Para relacionar una secuencia en cualquier lugar dentro de una cadena, el patrón debe comenzar y finalizar con un signo de porcentaje.
LIKE distingue entre mayúsculas y minúsculas; ILIKE no distingue entre mayúsculas y minúsculas.
Sintaxis
expression [ NOT ] LIKE | ILIKE pattern [ ESCAPE 'escape_char' ]
Argumentos
- expresión
-
Una expresión de carácter UTF-8 válido, como un nombre de columna.
- LIKE | ILIKE
-
LIKE realiza una coincidencia de patrones que distingue entre mayúsculas y minúsculas. ILIKE ejecuta una coincidencia de patrones sin distinción entre mayúsculas y minúsculas para caracteres UTF-8 (ASCII) de un byte. Para ejecutar una coincidencia de patrones sin distinguir entre mayúsculas y minúsculas con caracteres multibyte, utilice la función LOWER de expresión y patrón con una condición LIKE.
Al contrario que los predicados de comparación, como = y <>, los predicados LIKE e ILIKE no omiten implícitamente los espacios finales. Para omitir los espacios finales, utilice RTRIM o convierta explícitamente una columna CHAR en VARCHAR.
El operador
~~
es equivalente a LIKE y~~*
es equivalente a ILIKE. Además, los operadores!~~
y!~~*
son equivalentes a NOT LIKE y NOT ILIKE. - pattern
-
Una expresión de carácter UTF-8 válido con el patrón que se relacionará.
- escape_char (carácter_de_escape)
-
Una expresión de carácter que aplicará escape a metacaracteres en el patrón. La predeterminada es dos barras diagonales invertidas ("\\").
Si el patrón no contiene metacaracteres, solo representa la propia cadena; en ese caso, LIKE actúa igual que el operador de igualdad.
Cualquiera de las expresiones de carácter pueden ser tipos de datos CHAR o VARCHAR. Si son diferentes, Amazon Redshift convierte el patrón al tipo de datos de la expresión.
LIKE admite los siguientes metacaracteres de coincidencia de patrón:
Operador | Descripción |
---|---|
%
|
Coincide con cualquier secuencia de cero o más caracteres. |
_ |
Coincide con cualquier carácter. |
Ejemplos
En la tabla siguiente se muestran ejemplos de coincidencia de patrones a través de LIKE:
Expression | Devuelve |
---|---|
'abc' LIKE 'abc' |
True |
'abc' LIKE 'a%' |
True |
'abc' LIKE '_B_' |
False |
'abc' ILIKE '_B_' |
True |
'abc' LIKE 'c%' |
False |
En el siguiente ejemplo se encuentran todas las ciudades cuyos nombres comienzan con "E":
select distinct city from users where city like 'E%' order by city; city --------------- East Hartford East Lansing East Rutherford East St. Louis Easthampton Easton Eatontown Eau Claire ...
En el siguiente ejemplo se encuentran usuarios cuyos apellidos contienen "ten":
select distinct lastname from users where lastname like '%ten%' order by lastname; lastname ------------- Christensen Wooten ...
En el siguiente ejemplo se muestra cómo hacer coincidir varios patrones.
select distinct lastname from tickit.users where lastname like 'Chris%' or lastname like '%Wooten' order by lastname; lastname ------------- Christensen Christian Wooten ...
En el siguiente ejemplo se encuentran todas las ciudades cuyos terceros y cuartos caracteres son "ea". El comando usa ILIKE para demostrar que no distingue entre mayúsculas y minúsculas:
select distinct city from users where city ilike '__EA%' order by city; city ------------- Brea Clearwater Great Falls Ocean City Olean Wheaton (6 rows)
En el siguiente ejemplo se usa la cadena de escape predeterminada (\\) para buscar cadenas que incluyan «start_» (el texto start
seguido de un guion bajo _
):
select tablename, "column" from pg_table_def where "column" like '%start\\_%' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)
En el siguiente ejemplo se especifica «^» como el carácter de escape y, luego, se utiliza el carácter de escape para buscar cadenas que incluyan «start_» (el texto start
seguido de un guion bajo _
):
select tablename, "column" from pg_table_def where "column" like '%start^_%' escape '^' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)
En el siguiente ejemplo, se utiliza el operador ~~*
para realizar una búsqueda que no distinga mayúsculas de minúsculas (ILIKE) de ciudades que comiencen por "Ag".
select distinct city from users where city ~~* 'Ag%' order by city;
city ------------ Agat Agawam Agoura Hills Aguadilla