PostgreSQL - LIKE 子句:初學者的友好指南
您好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入 PostgreSQL 的世界,特別專注於 LIKE 子句。別擔心你還是個新手——我將成為你的友好指南,我們會一步步來。到了這個教學的結尾,你將能像專業人士一樣使用 LIKE 子句!
LIKE 子句是什麼?
在我們深入細節之前,讓我們了解一下 LIKE 子句到底是什麼。想象一下,你在一個巨大的圖書館裡尋找一本書,但你只記得書名的一部分。如果你能搜索與之類似書名的書,豈不是很好?這正是 PostgreSQL 中的 LIKE 子句所做的——它幫助你搜索與特定模式匹配的數據。
LIKE 子句在 SQL WHERE 子句中用於在一個列中搜索指定的模式。它就像一個超級搜索功能,理解萬用字符。酷炫吧?
LIKE 子句的語法
現在,讓我們來看看 LIKE 子句的基本語法:
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
別被這個嚇到!我們會分解它:
-
SELECT column1, column2, ...
:這裡是你想要在結果中看到的列。 -
FROM table_name
:這是你正在搜索的表。 -
WHERE columnN LIKE pattern
:這就是魔法發生的地方。你告訴 PostgreSQL 在columnN
中尋找與你的pattern
匹配的數據。
LIKE 子句中的萬用字符
在我們進入示例之前,讓我們來介紹兩個使 LIKE 子句如此強大的特殊字符:
-
%
(百分號):這代表零個、一個或多個字符。 -
_
(下劃線):這代表一個字符。
把這些當作紙牌遊戲中的王牌——它們可以代替你搜索模式中的其他字符。
LIKE 子句的使用示例
讓我們深入一些示例,看看 LIKE 子句在真實世界情況中是如何工作的。想象我們有一個名為 books
的表,其中包含列 book_id
、title
和 author
。
示例 1:尋找以 'The' 開頭的書名
SELECT title
FROM books
WHERE title LIKE 'The%';
這個查詢將返回所有以 'The' 開頭的書名。'The' 之後的 %
意味著 "跟隨任何數量的字符"。
所以,這可能會返回:
- The Great Gatsby
- The Catcher in the Rye
- The Hobbit
示例 2:尋找名稱中包含 'son' 的作者
SELECT author
FROM books
WHERE author LIKE '%son%';
這個查詢尋找名稱中包含 'son' 的作者。'son' 之前和之後的 %
意味著 "之前和之後有任何字符"。
這可能會返回:
- Jodi Picoult
- Orson Scott Card
- Jason Reynolds
示例 3:尋找恰好有 5 個字符的書名
SELECT title
FROM books
WHERE title LIKE '_____';
在這裡,我們使用五個下劃線來尋找恰好五個字符長的書名。
這可能會返回:
- Dunes
- Ender
- Holes
示例 4:不區分大小寫的搜索
默認情況下,LIKE 子句是區分大小寫的。但如果你想要無論 'the' 是大寫還是小寫都要找到它,PostgreSQL 有解決方案:
SELECT title
FROM books
WHERE LOWER(title) LIKE '%the%';
這個查詢將所有書名轉換為小寫後再進行搜索,所以它會找到 'The'、'THE'、'the' 和任何其他組合。
高級 LIKE 子句技巧
現在你知道了基本知識,讓我們來看看一些更先進的技巧。
使用 NOT LIKE
有時候,你想要找到與模式不匹配的所有內容。這就是 NOT LIKE 的用處:
SELECT title
FROM books
WHERE title NOT LIKE 'The%';
這將找到所有不以 'The' 開頭的書名。
轉義特殊字符
如果你想要搜索的標題中實際包含了 '%' 或 '_',你可以使用轉義字符:
SELECT title
FROM books
WHERE title LIKE '50\% off%' ESCAPE '\';
這將找到以 '50% off' 開頭的標題,將 '%' 當作文字字符而非萬用字符。
LIKE 子句方法
這裡是一個總結我們可以使用 LIKE 子句的不同方法的表格:
方法 | 描述 | 示例 |
---|---|---|
LIKE 'pattern' | 匹配 exact 模式 | WHERE title LIKE 'The Great Gatsby' |
LIKE '%pattern%' | 匹配任何地方的模式 | WHERE title LIKE '%Great%' |
LIKE 'pattern%' | 匹配開頭的模式 | WHERE title LIKE 'The%' |
LIKE '%pattern' | 匹配結尾的模式 | WHERE title LIKE '%Gatsby' |
LIKE 'pattern' | 匹配帶有單個字符萬用字符的模式 | WHERE title LIKE 'he' |
NOT LIKE 'pattern' | 匹配與模式不匹配的所有內容 | WHERE title NOT LIKE 'The%' |
ILIKE 'pattern' | 不區分大小寫的 LIKE | WHERE title ILIKE 'the%' |
結論
好了,各位!你剛剛踏入了 PostgreSQL 的 LIKE 子句的奇妙世界。記住,熟能生巧,所以不要害怕嘗試不同的模式和組合。
LIKE 子句是你 PostgreSQL 工具包中的一個強大工具,它讓你可以靈活精準地搜索數據。無論你是尋找書名、客戶名還是任何其他基於文本的數據,LIKE 子句都能為你提供支持。
持續探索,持續查詢,最重要的是,與數據庫一起玩得開心!誰知道呢?你可能會成為下一個數據庫超級英雄。直到下一次,快樂編程!
Credits: Image by storyset