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

PostgreSQL LIKE 子句

In PostgreSQL, se vogliamo ottenere dati che contengono determinati caratteri, possiamo utilizzare LIKE clausola.

Nella clausola LIKE, di solito combinato con i caratteri di sostituzione, i caratteri di sostituzione rappresentano caratteri casuali, in PostgreSQL ci sono principalmente due tipi di caratteri di sostituzione:

  • il segno di percentuale %

  • il trattino basso _

Se non vengono utilizzati i due caratteri di sostituzione di seguito, la clausola LIKE e l'equazione = producono risultati identici.

sintassi

Di seguito è riportato l'uso della clausola LIKE con il segno di percentuale % e il trattino basso _ E sintassi comune per ottenere dati da un database:

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

你可以在 WHERE 子句中指定任何条件。

你可以使用 AND 或者 OR 指定一个或多个条件。

XXXX 可以是任何数字或者字符。

Online Example

下面是 LIKE 语句中演示了 % 和 _ 的一些差别:

ExampleDescription
WHERE SALARY::text LIKE '200%}找出以 200 开头的数据的 SALARY 字段。
WHERE SALARY::text LIKE '%200%}找出含有 200 字符的数据的 SALARY 字段。
WHERE SALARY::text LIKE '_00%}找出第二和第三个位置上有 00 的数据的 SALARY 字段。
WHERE SALARY::text LIKE '2'  %%找出以 2 开头且字符长度大于 3 的数据的 SALARY 字段。
WHERE SALARY::text LIKE '%2'找出以 2 结尾的数据的 SALARY 字段
WHERE SALARY::text LIKE '_2%3'找出第二个位置上有 2 并且以 3 结尾的数据的 SALARY 字段
WHERE SALARY::text LIKE '2___3'找出以 2 开头,3 结尾并且是 5 位数的数据的 SALARY 字段

In PostgreSQL, the LIKE clause can only be used for character comparison, so in the above example, we need to convert the integer data type to the string data type.

创建 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 righe)

L'esempio seguente troverà i dati che iniziano con AGE con 2:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';

Risultati ottenuti di seguito:

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 righe)

L'esempio seguente troverà i dati che contengono - Dati di caratteri:

w3codeboxdb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';

Risultati ottenuti di seguito:

id | name | age |                                                                                                                   address                                                   | salary
----+------+-----+-------------------------------------------+--------
  4 | Mark | 25 | Rich-Mond                                                                                                          | 65000
  6 | Kim | 22 | South-Hall                                                                                                                  | 45000
(2 righe)