Cláusula LIKE en PostgreSQL
En la base de datos PostgreSQL, si queremos obtener datos que contengan ciertos caracteres, podemos usarLIKEla cláusula.
En la cláusula LIKE, normalmente se combina con comodines. Los comodines representan cualquier carácter. En PostgreSQL, principalmente existen los siguientes dos comodines:
- Signo de porcentaje%
- Guion bajo_
Si no se usan los dos comodines anteriores, la cláusula LIKE y el signo igual=darán el mismo resultado.
Sintaxis
La siguiente es la sintaxis general para usar la cláusula LIKE con el signo de porcentaje%y el guion bajo_para obtener datos de la base de datos:
SELECT FROM table_name WHERE column LIKE 'XXXX%'; 或者 SELECT FROM table_name WHERE column LIKE '%XXXX%'; 或者 SELECT FROM table_name WHERE column LIKE 'XXXX_'; 或者 SELECT FROM table_name WHERE column LIKE '_XXXX'; 或者 SELECT FROM table_name WHERE column LIKE '_XXXX_';
Puedes especificar cualquier condición en la cláusula WHERE.
Puedes usar AND u OR para especificar una o más condiciones.
XXXXPuede ser cualquier número o carácter.
Ejemplos
A continuación se demuestran%y_algunas diferencias en las cláusulas LIKE:
| Ejemplos | Descripción |
|---|---|
| WHERE SALARY::text LIKE '200%' | Encuentra los datos en el campo SALARY que empiezan con 200. |
| WHERE SALARY::text LIKE '%200%' | Encuentra los datos en el campo SALARY que contienen los caracteres 200. |
| WHERE SALARY::text LIKE '_00%' | Encuentra los datos en el campo SALARY donde 00 aparece en la segunda y tercera posición. |
| WHERE SALARY::text LIKE '2_%_%' | Encuentra los datos en el campo SALARY que empiezan con 2 y tienen una longitud de caracteres mayor que 3. |
| WHERE SALARY::text LIKE '%2' | Encuentra los datos en el campo SALARY que terminan con 2. |
| WHERE SALARY::text LIKE '_2%3' | Encuentra los datos en el campo SALARY donde 2 está en la segunda posición y terminan con 3. |
| WHERE SALARY::text LIKE '2___3' | Encuentra los datos en el campo SALARY que empiezan con 2, terminan con 3 y tienen 5 dígitos. |
En PostgreSQL, la cláusula LIKE solo se puede usar para comparar caracteres. Por lo tanto, en los ejemplos anteriores, debemos convertir el tipo de dato entero al tipo de dato cadena.
Crear la tabla COMPANY (Descargar el archivo SQL de COMPANY), el contenido de los datos es el siguiente:
ejemplodb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
El siguiente ejemplo encontrará los datos donde AGE empieza con 2:
ejemplodb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';
Se obtiene el siguiente resultado:
id | name | age | address | salary ----+-------+-----+-------------+-------- 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 (7 rows)
El siguiente ejemplo encontrará los datos en el campo address que contienen-el carácter:
ejemplodb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
El resultado es el siguiente:
id | name | age | address | salary ----+------+-----+-------------------------------------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 6 | Kim | 22 | South-Hall | 45000 (2 rows)Otras extensiones