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'