
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空值函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - LIKE 運算子
SQL LIKE 運算子
SQL LIKE 運算子用於根據指定的模式檢索表中某一列中的資料。
它與 UPDATE、DELETE 和 SELECT 語句的 WHERE 子句一起使用,根據給定的模式過濾行。這些模式使用萬用字元指定。
假設我們需要提交所有名字以“K”開頭的學生的列表。我們可以藉助 LIKE 運算子獲取此列表,如下所示:
WHERE student_name LIKE 'K%';
這裡,% 是一個萬用字元,表示零個、一個或多個字元。表示式K%指定它將顯示所有名字以“k”開頭的學生列表。
LIKE 運算子可以與字串、數字或日期值一起使用。但是,建議使用字串值。
語法
SQL LIKE 運算子的基本語法如下:
SELECT column1, column2, ... FROM table_name WHERE columnn LIKE specified_pattern;
什麼是萬用字元?
SQL 萬用字元是在 SQL 查詢中用於匹配資料中模式的特殊字元。以下是與 MySQL 資料庫中的 LIKE 運算子一起使用的萬用字元:
序號 | 萬用字元 & 定義 |
---|---|
1 |
% 百分號表示零個、一個或多個字元。 |
2 |
_ 下劃線表示一個數字或字元。 |
在 LIKE 運算子中,上述萬用字元可以單獨使用,也可以相互組合使用。
下表提供了一些示例,這些示例顯示了具有不同 LIKE 運算子(使用“%”和“_”)的 WHERE 子句:
序號 | 語句 & 描述 |
---|---|
1 |
WHERE SALARY LIKE '200%' 查詢以 200 開頭的任何值。 |
2 |
WHERE SALARY LIKE '%200%' 查詢在任何位置包含 200 的任何值。 |
3 |
WHERE SALARY LIKE '_00%' 查詢在第二位和第三位包含 00 的任何值。 |
4 |
WHERE SALARY LIKE '2_%_%' 查詢以 2 開頭且至少有 3 個字元的任何值。 |
5 |
WHERE SALARY LIKE '%2' 查詢以 2 結尾的任何值。 |
6 |
WHERE SALARY LIKE '_2%3' 查詢在第二位包含 2 且以 3 結尾的任何值。 |
7 |
WHERE SALARY LIKE '2___3' 查詢五位數中以 2 開頭並以 3 結尾的任何值。 |
“%”萬用字元字元
“%”符號表示零個或多個字元。“%”萬用字元匹配任何長度的字串,甚至包括零長度字串。
示例
為了更好地理解這一點,讓我們考慮 CUSTOMERS 表,該表包含客戶的個人詳細資訊,包括他們的姓名、年齡、地址和工資等,如下所示:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,使用 INSERT 語句將值插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
該表將建立如下所示:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
現在,讓我們顯示 CUSTOMERS 表中的所有記錄,其中 SALARY 以 200 開頭:
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';
輸出
這將產生以下結果:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
示例
以下是顯示之前建立的 CUSTOMERS 表中所有記錄的查詢,其中 NAME 在任何位置都包含“al”。在這裡,我們在 LIKE 條件中使用了多個“%”萬用字元:
SELECT * FROM CUSTOMERS WHERE NAME LIKE '%al%';
輸出
產生以下結果:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
4 | Chaitali | 25 | Mumbai | 6500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
“_”萬用字元字元
下劃線萬用字元表示一個數字或字元。單個“_”查詢與“%”萬用字元類似的恰好一個字元。
示例
以下是顯示之前建立的 CUSTOMERS 表中所有記錄的查詢,其中 Name 以K開頭且至少有 4 個字元:
SELECT * FROM CUSTOMERS WHERE NAME LIKE 'K___%';
輸出
獲得的結果如下所示:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
示例
以下是顯示 CUSTOMERS 表中所有記錄的查詢,其中 NAME 在第三位包含“m”:
SELECT * FROM CUSTOMERS WHERE NAME LIKE '__m%';
輸出
執行上述查詢後,我們將獲得以下結果:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
LIKE 運算子與 OR
我們還可以透過使用AND或OR運算子,使用 LIKE 運算子匹配多個字串模式來選擇行。
語法
以下是使用 LIKE 運算子與 OR 運算子的基本語法:
SELECT column1, column2, ... FROM table_name WHERE column1 LIKE pattern1 OR column2 LIKE pattern2 OR ...;
示例
在這裡,SQL 查詢檢索姓名以C開頭並以i結尾的客戶的記錄,或者姓名以k結尾的客戶的記錄:
SELECT * FROM CUSTOMERS WHERE NAME LIKE 'C%i' OR NAME LIKE '%k';
輸出
這將產生以下結果:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
NOT 運算子與 LIKE 條件
我們使用 NOT 運算子與 LIKE 一起提取不包含搜尋模式中提供的特定字串的行。
語法
以下是 SQL 中 NOT LIKE 運算子的基本語法:
SELECT column1, column2, ... FROM table_name WHERE column1 NOT LIKE pattern;
示例
在下面給出的查詢中,我們正在獲取所有姓名不以K開頭的客戶:
SELECT * FROM CUSTOMERS WHERE NAME NOT LIKE 'K%';
輸出
這將產生以下結果:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
LIKE 運算子的跳脫字元
SQL 中的跳脫字元用於從LIKE運算子的表示式中排除某些萬用字元字元。透過這樣做,我們可以以其一般含義使用這些字元。
使用跳脫字元,我們還可以避免使用 SQL 語法中保留的字元來表示特定命令,例如單引號'、“%”和“_”。
例如,如果您需要在 LIKE 條件中搜索%作為字面量,則可以使用跳脫字元來實現。
跳脫字元僅定義為單個字元。建議選擇資料中不存在的字元。
語法
使用跳脫字元的 LIKE 運算子的語法如下:
SELECT column1, column2, ... FROM table_name WHERE column1 LIKE 'pattern ESCAPE escape_character';
其中,
pattern是要匹配的模式。
ESCAPE是指示跳脫字元的關鍵字
escape_character是要用作跳脫字元的字元。
示例
讓我們使用以下查詢建立一個新的 EMPLOYEE 表:
CREATE TABLE EMPLOYEE ( SALARY DECIMAL (18,2) NOT NULL, BONUS_PERCENT VARCHAR (20) );
現在,我們可以使用 INSERT 語句將值插入這些空表中,如下所示:
INSERT INTO EMPLOYEE VALUES (67000.00, '45.00'), (54000.00, '20.34%'), (75000.00, '51.00'), (84000.00, '56.82%');
Employee表包含組織中員工的工資以及他們在工資中的獎金百分比,如下所示:
工資 | BONUS_PERCENT |
---|---|
67000.00 | 45.00 |
54000.00 | 20.34% |
75000.00 | 51.00 |
84000.00 | 56.82% |
現在,我們正在顯示 EMPLOYEE 表中的所有記錄,其中 BONUS_PERCENT 包含%字面量:
SELECT * FROM EMPLOYEE WHERE BONUS_PERCENT LIKE'%!%%' ESCAPE '!';
輸出
這將產生以下結果:
工資 | BONUS_PERCENT |
---|---|
54000.00 | 20.34% |
84000.00 | 56.82% |
示例
在這裡,我們正在檢索以2開頭幷包含%字面量的 BONUS_PERCENT:
SELECT * FROM EMPLOYEE WHERE BONUS_PERCENT LIKE'2%!%%' ESCAPE '!';
輸出
獲得以下結果:
工資 | BONUS_PERCENT |
---|---|
54000.00 | 20.34% |
SQL 中 LIKE 運算子的用法
LIKE 運算子的一些用途如下:
它幫助我們提取與所需模式匹配的資料。
它幫助我們在資料上執行基於複雜正則表示式的查詢。
它簡化了複雜的查詢。