服務熱線
153 8323 9821
在SQL查詢中,關鍵詞Like可提供模糊查詢功能,它通常與通配符一起使用。
1 Like條件適用數據庫字段類型
可與LIKE配對的數據類型有字符串、日期或時間值等。
2 通配符
使用時需將通配符和字符串一起用單引號引起來,例如:
LIKE 趙% 將搜索姓趙的人名或者說以漢字‘趙’ 開頭的字符串(如 趙剛、趙小剛等)。
LIKE %剛 將搜索以漢字‘剛’結尾的所有字符串(如劉剛、李小剛等)。
LIKE %小% 將搜索在任何位置包含漢字‘小’的所有字符串(如趙小剛、李小剛、山本小郎等)。
LIKE _小剛 將搜索以漢字“小剛”結尾的所有三個漢字的名稱(如 李小剛、趙小剛)。
針對英文,情形更多,如
LIKE [CK]ars[eo]n 將搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
LIKE [M-Z]inger 將搜索以字符串 inger 結尾、以從 M 到 Z 的任何單個字母開頭的所有名稱(如 Ringer)。
LIKE M[^c]% 將搜索以字母 M 開頭,并且第二個字母不是 c 的所有名稱(如 MacFeather)。
3 Like條件的使用
在author表中,查詢所有區號為 010 的電話號碼的SQL語句如下:
在 authors 表中查找區號不是 010 的所有電話號碼,可使用以下SQL語句:
或
查詢從 authors 表中檢索以 010 開頭且 IS NOT NULL 的所有電話號碼的SQL語句為:
可用于 text 列的 WHERE 條件只有 LIKE、IS NULL 或 PATINDEX。
不與 LIKE 一同使用的通配符將解釋為常量而非模式,換言之,這些通配符僅代表其本身的值。下列查詢試圖查找到少由四個字符 010% 組成的電話號碼。該查詢并不會查找以 010 開頭的電話號碼。
3 Like的查詢效率
如果表達式以通配符開頭,就不能使用索引。(就如同給定了姓名"%mith"而非"Smith"時,將無法知道應從電話簿的哪一頁開始查找。)
表達式中間或結尾處的通配符不妨礙使用索引,如同在電話簿中一樣,如果姓名為"Samuel%",則不論 Samuels 和 Samuelson 是否都在電話簿上,都應知道該從何處開始查找。
上一篇:經典SQL語句大全之基礎篇
下一篇:SQL提高查詢效率之綜述篇