English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En la base de datos PostgreSQL, si queremos obtener datos que contengan ciertos caracteres, podemos usar LIKE cláusula
En la cláusula LIKE, se utiliza generalmente junto con los comodines, que representan caracteres arbitrarios. En PostgreSQL, hay principalmente dos tipos de comodines:
Símbolo de porcentaje %
Guión bajo _
Si no se utilizan los dos símbolos de sustitución anteriores, la cláusula LIKE y el igual = dan resultados idénticos.
A continuación, se muestra el uso de la cláusula LIKE con el símbolo de porcentaje % y el guión bajo _ La sintaxis común para obtener datos de la base de datos:
SELECT FROM table_name WHERE column LIKE 'XXXX%'; o SELECT FROM table_name WHERE column LIKE '%XXXX%'; o SELECT FROM table_name WHERE column LIKE 'XXXX_'; o SELECT FROM table_name WHERE column LIKE '_XXXX'; o SELECT FROM table_name WHERE column LIKE '_XXXX_';
Puede especificar cualquier condición en la cláusula WHERE.
Puede usar AND o OR para especificar una o más condiciones.
XXXX Puede ser cualquier número o carácter.
A continuación, se muestra algunas diferencias entre % y _ en la cláusula LIKE:
Ejemplo | Descripción |
---|---|
WHERE SALARY::text LIKE '200%" | 找出 SALARY 字段中以 2de datos que comiencen con '00'. |
WHERE SALARY::text LIKE '%200%" | Encontrar datos que contengan 2de datos con '00'. |
WHERE SALARY::text LIKE '_00%" | Encontrar los datos con '00' en la segunda y tercera posición del campo SALARY. |
WHERE SALARY::text LIKE '2 %%' | 找出 SALARY 字段中以 2 La longitud del carácter inicial es mayor que 3 de los datos. |
WHERE SALARY::text LIKE '%2' | 找出 SALARY 字段中以 2 结尾的数据 |
WHERE SALARY::text LIKE '_2%3' | 找出 SALARY 字段中 2 在第二个位置上并且以 3 结尾的数据 |
WHERE SALARY::text LIKE '2___3' | 找出 SALARY 字段中以 2 开头,3 结尾并且是 5 位数的数据 |
在 PostgreSQL 中,LIKE 子句是只能用于对字符进行比较,因此在上面列子中,我们要将整型数据类型转化为字符串数据类型。
创建 COMPANY 表(下载 COMPANY SQL 文件 ),数据内容如下:
w3codeboxdb# 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)
下面示例将找出 AGE 以 2 开头的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';
得到以下结果:
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)
下面示例将找出 address 字段中含有 - 字符的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
得到结果如下:
id | name | age | address | salary ----+------+-----+-------------------------------------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 6 | Kim | 22 | South-Hall | 45000 (2 rows)