PostgreSQL - LIKE 子句:初學者的友好指南

您好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入 PostgreSQL 的世界,特別專注於 LIKE 子句。別擔心你還是個新手——我將成為你的友好指南,我們會一步步來。到了這個教學的結尾,你將能像專業人士一樣使用 LIKE 子句!

PostgreSQL - Like Clause

LIKE 子句是什麼?

在我們深入細節之前,讓我們了解一下 LIKE 子句到底是什麼。想象一下,你在一個巨大的圖書館裡尋找一本書,但你只記得書名的一部分。如果你能搜索與之類似書名的書,豈不是很好?這正是 PostgreSQL 中的 LIKE 子句所做的——它幫助你搜索與特定模式匹配的數據。

LIKE 子句在 SQL WHERE 子句中用於在一個列中搜索指定的模式。它就像一個超級搜索功能,理解萬用字符。酷炫吧?

LIKE 子句的語法

現在,讓我們來看看 LIKE 子句的基本語法:

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

別被這個嚇到!我們會分解它:

  1. SELECT column1, column2, ...:這裡是你想要在結果中看到的列。
  2. FROM table_name:這是你正在搜索的表。
  3. WHERE columnN LIKE pattern:這就是魔法發生的地方。你告訴 PostgreSQL 在 columnN 中尋找與你的 pattern 匹配的數據。

LIKE 子句中的萬用字符

在我們進入示例之前,讓我們來介紹兩個使 LIKE 子句如此強大的特殊字符:

  1. %(百分號):這代表零個、一個或多個字符。
  2. _(下劃線):這代表一個字符。

把這些當作紙牌遊戲中的王牌——它們可以代替你搜索模式中的其他字符。

LIKE 子句的使用示例

讓我們深入一些示例,看看 LIKE 子句在真實世界情況中是如何工作的。想象我們有一個名為 books 的表,其中包含列 book_idtitleauthor

示例 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