- PostgreSQL 教程
- PostgreSQL - 首頁
- PostgreSQL - 概述
- PostgreSQL - 環境設定
- PostgreSQL - 語法
- PostgreSQL - 資料型別
- PostgreSQL - 建立資料庫
- PostgreSQL - 選擇資料庫
- PostgreSQL - 刪除資料庫
- PostgreSQL - 建立表
- PostgreSQL - 刪除表
- PostgreSQL - 模式
- PostgreSQL - INSERT 查詢
- PostgreSQL - SELECT 查詢
- PostgreSQL - 運算子
- PostgreSQL - 表示式
- PostgreSQL - WHERE 子句
- PostgreSQL - AND & OR 子句
- PostgreSQL - UPDATE 查詢
- PostgreSQL - DELETE 查詢
- PostgreSQL - LIKE 子句
- PostgreSQL - LIMIT 子句
- PostgreSQL - ORDER BY 子句
- PostgreSQL - GROUP BY
- PostgreSQL - WITH 子句
- PostgreSQL - HAVING 子句
- PostgreSQL - DISTINCT 關鍵字
- 高階 PostgreSQL
- PostgreSQL - 約束
- PostgreSQL - 連線
- PostgreSQL - UNION 子句
- PostgreSQL - NULL 值
- PostgreSQL - 別名語法
- PostgreSQL - 觸發器
- PostgreSQL - 索引
- PostgreSQL - ALTER TABLE 命令
- TRUNCATE TABLE 命令
- PostgreSQL - 檢視
- PostgreSQL - 事務
- PostgreSQL - 鎖
- PostgreSQL - 子查詢
- PostgreSQL - 自動遞增
- PostgreSQL - 許可權
- 日期/時間函式和運算子
- PostgreSQL - 函式
- PostgreSQL - 常用函式
- PostgreSQL 介面
- PostgreSQL - C/C++
- PostgreSQL - Java
- PostgreSQL - PHP
- PostgreSQL - Perl
- PostgreSQL - Python
- PostgreSQL 資源
- PostgreSQL - 快速指南
- PostgreSQL - 資源
- PostgreSQL - 討論
PostgreSQL - LIKE 子句
PostgreSQL 的 LIKE 運算子用於使用萬用字元將文字值與模式匹配。如果搜尋表示式可以與模式表示式匹配,則 LIKE 運算子將返回 true,即 1。
與 LIKE 運算子一起使用的兩個萬用字元:
- 百分號 (%)
- 下劃線 (_)
百分號代表零個、一個或多個數字或字元。下劃線代表單個數字或字元。這些符號可以組合使用。
如果這兩個符號中的任何一個都不與 LIKE 子句一起使用,則 LIKE 的作用類似於等於運算子。
語法
% 和 _ 的基本語法如下:
SELECT FROM table_name WHERE column LIKE 'XXXX%' or SELECT FROM table_name WHERE column LIKE '%XXXX%' or SELECT FROM table_name WHERE column LIKE 'XXXX_' or SELECT FROM table_name WHERE column LIKE '_XXXX' or SELECT FROM table_name WHERE column LIKE '_XXXX_'
可以使用 AND 或 OR 運算子組合 N 個條件。此處 XXXX 可以是任何數值或字串值。
示例
以下是一些示例,其中 WHERE 部分包含帶有 '%' 和 '_' 運算子的不同 LIKE 子句:
| 序號 | 語句 & 描述 |
|---|---|
| 1 | WHERE SALARY::text LIKE '200%' 查詢以 200 開頭的任何值 |
| 2 | WHERE SALARY::text LIKE '%200%' 查詢任何位置包含 200 的任何值 |
| 3 | WHERE SALARY::text LIKE '_00%' 查詢第二位和第三位為 00 的任何值 |
| 4 | WHERE SALARY::text LIKE '2_%_%' 查詢以 2 開頭且至少包含 3 個字元的任何值 |
| 5 | WHERE SALARY::text LIKE '%2' 查詢以 2 結尾的任何值 |
| 6 | WHERE SALARY::text LIKE '_2%3' 查詢第二位為 2 且以 3 結尾的任何值 |
| 7 | WHERE SALARY::text LIKE '2___3' 查詢五位數中以 2 開頭並以 3 結尾的任何值 |
Postgres LIKE 僅進行字串比較。因此,我們需要像上面的示例一樣將整型列顯式轉換為字串。
讓我們來看一個真實的例子,考慮表 COMPANY,其記錄如下:
# 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)
以下是一個示例,它將顯示 COMPANY 表中 AGE 以 2 開頭的所有記錄:
testdb=# 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)
以下是一個示例,它將顯示 COMPANY 表中 ADDRESS 在文字內包含連字元 (-) 的所有記錄:
testdb=# 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)