https://www.w3schools.com/sql/sql_like.asp

LIKE 語法

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

LIKE 這的指令可搭配 WHERE 子句一起使用,可用在依照一特定模式為相似條件來搜尋資料表中的資料。最常見的兩種作法為搭配 %_ 一起使用。

  • %:代表零個、一個或多個字符,還有字符前後的位置。
  • _:代表一個、單個字符位置,兩個 _ 就是兩個字符,三個 _ 就是三個字符,已此類推。

可以想像成當我們要搜尋一個模糊的範圍,或是只知道部份條件時我們可以用 %_ 來代表我們不確定的區域。

例如:

  • 想找 A 開頭的國家 - WHERE CountryName LIKE 'A%'
  • 想找以「台」開頭的地址 - WHERE Address LIKE ‘台%’

這種寫法可能會出現所有以「台灣」或「台北市」、「台中市」開頭的地址,

若你只想要縣市的範圍,那就要參考下面這種寫法,讓條件更精確

想找以「台」為開頭,且以「市」為第三個字的地址 - WHERE Address LIKE '台_市%' 這種寫法可能會出現台北市 XXX 街,台中市OOO街 的地址,可以把地址顯示的範圍更明確定義

另外,還記得 AND 和 OR 指令嗎?他跟 LIKE 也可以搭配使用,讓你的搜尋條件更加精確!

%_ 的使用情境

%在字串後面

%借代的意思就是可能存在的字串,所以接在特定字串後面,就代表要查找該字串開頭的詞。
以下面指令為例,就是要查找以「a」開頭的值。

WHERE CustomerName LIKE 'a%';

%在字串前面

%借代的意思就是可能存在的字串,所以接在特定字串前面,就代表要查找某個詞結尾是該特定字串。
以下面指令為例,就是要查找某個以「a」結尾的值。

WHERE CustomerName LIKE '%a';

% 在特定字串的開頭與結尾

%借代的意思就是可能存在的字串,%若放在特定字串的開頭與結尾,就代表要查找某個詞中間就是該特定字串。

以下面指令為例,就是要查找某個中間有出現「or」兩個字串的值。

WHERE CustomerName LIKE '%or%'

_開頭,中間放字串,% 結尾

_借代的意思就是可能存在的字串位置,所以以下面為例,就是要查找第二個位置有「r」的任何值

WHERE CustomerName LIKE '_r%'

字串開頭,中間一個_% 結尾

_借代的意思就是可能存在的字串位置,所以以下面為例,就是要查找以「a」開頭且總字串長度至少為 2 個字符的任何值

WHERE CustomerName LIKE 'a_%'

字串開頭,中間兩個_% 結尾

_借代的意思就是可能存在的字串位置,複數個_就是複數位置,以下面為例,就是要查找以「a」開頭,總字串長度至少為 3 個字串的任何值。

WHERE CustomerName LIKE 'a__%'

字串開頭,中間%,字串結尾

%借代的意思就是可能存在的字串,%若放在兩個特定字串的中間,就代表要查找限定頭尾都是特定字串的詞,以下面為例就是要查找以「a」開頭並以「o」結尾的任何值。

WHERE ContactName LIKE 'a%o'