English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Cláusula LIKE PostgreSQL

No banco de dados PostgreSQL, se quisermos obter dados contendo certos caracteres, podemos usar LIKE Cláusula.

No comando LIKE, geralmente combinado com caracteres de substituição, que representam caracteres arbitrários. No PostgreSQL, há os seguintes dois tipos de caracteres de substituição:

  • Porcentagem %

  • Sublinhado _

Se não forem usados os dois tipos de caracteres de substituição acima, o resultado da cláusula LIKE é o mesmo que o do símbolo de igualdade =.

Sintaxe

A seguir, a sintaxe de uso do LIKE com o símbolo de porcentagem: % e o sublinhado _ A sintaxe geral para obter dados do banco de dados:

SELECT FROM table_name WHERE column LIKE 'XXXX%';
ou
SELECT FROM table_name WHERE column LIKE '%XXXX%';
ou
SELECT FROM table_name WHERE column LIKE 'XXXX_';
ou
SELECT FROM table_name WHERE column LIKE '_XXXX';
ou
SELECT FROM table_name WHERE column LIKE '_XXXX_';

Você pode especificar qualquer condição na cláusula WHERE.

Você pode usar AND ou OR para especificar uma ou mais condições.

XXXX Pode ser qualquer número ou caractere.

Exemplo online

A seguir, alguns exemplos de diferenças entre % e _ no comando LIKE:

ExemploDescrição
WHERE SALARY::text LIKE '200%}找出 SALARY 字段中以 2com '00' no início.
WHERE SALARY::text LIKE '%200%}Encontrar dados contendo 2com caracteres '00'.
WHERE SALARY::text LIKE '_00%}Encontrar dados com '00' nas posições segunda e terceira no campo SALARY.
WHERE SALARY::text LIKE '2  %%'找出 SALARY 字段中以 2 A comprimento do caractere inicial é maior do que 3 dos dados.
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)