LIKE 操作符用於在 WHERE 子句中搜尋列中的指定模式。
基本介紹
- 中文名:連結
- 外文名:SQL LIKE
- 所屬領域:資料庫
基本介紹,原始的表,實例,例子 1,例子 2,例子 3,例子 4,
基本介紹
SQL LIKE 操作符語法
SELECT column_name(s)FROM table_name WHERE column_name LIKE pattern
占位符
‘_':下劃線,表示1個任意字元;如 ... where name like '_am',表示僅第一位任意,並以'am'結尾,結果如"Tam","Mam","Pam"等。
'%’: 百分號,表示任意個任意字元;如 ... where name like ‘%am',表示前面可以有任意位,只要以'am'結尾,結果如"abcam",“bcdefgham","qwertyuiopam","am"等等。
SQL對like 操作中的特殊字元處理方法:
SQL Server查詢過程中,單引號 ' 是特殊字元,所以在查詢的時候要轉換成雙單引號 '' 。
在like操作還有以下特殊字元:下劃線_,百分號%,方括弧[],尖號^。 其用途如下:
下劃線:用於代替一個任意字元(相當於正則表達式中的 ? ) 百分號:用於代替任意數目的任意字元(相當於正則表達式中的 * )
方括弧:用於轉義(事實上只有左方括弧用於轉義,右方括弧使用最近優先原則匹配最近的左方括弧)
尖號:用於排除一些字元進行匹配(這個與正則表達式中的一樣)
以下是一些匹配的舉例,需要說明的是,只有like操作才有這些特殊字元,=操作是沒有的。
a_b... a[_]b%
a%b... a[%]b%
a[b... a[[]b%
a]b... a]b%
a[]b... a[[]]b%
a[^]b... a[[]^]b%
a[^^]b... a[[]^^]b%
在實際進行處理的時候,對於=操作,我們一般只需要如此替換:
' -> ''
對於like操作,需要進行以下替換(注意順序也很重要)
[ -> [[] (這個必須是第一個替換的!!)
% -> [%] (這裡%是指希望匹配的字元本身包括的%而不是專門用於匹配的通配符)
_ -> [_]
原始的表
Persons 表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
實例
例子 1
現在,我們希望從上面的 "Persons" 表中選取居住在以 "N" 開始的城市裡的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE 'N%'提示:"%" 可用於定義通配符(模式中缺少的字母)。
結果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
2 | Bush | George | Fifth Avenue | New York |
例子 2
接下來,我們希望從 "Persons" 表中選取居住在以 "g" 結尾的城市裡的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE '%g'
結果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
3 | Carter | Thomas | Changan Street | Beijing |
例子 3
接下來,我們希望從 "Persons" 表中選取居住在包含 "lon" 的城市裡的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE '%lon%'結果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
例子 4
通過使用 NOT 關鍵字,我們可以從 "Persons" 表中選取居住在不包含 "lon" 的城市裡的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City NOT LIKE '%lon%'結果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |