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