6.1 LIKE 操作符
前面介紹的所有操作符都是針對已知值進行過濾。但是,這種過濾方法并不是任何時候都好用。
例如:怎樣搜索產品名中包含文本 bean bag 的所有產品?
【注意】通配符搜索只能用于文本字段(字符串),非文本數據類型字段不能使用通配符搜索
【解析】通配符:用來匹配值的一部分的特殊字符
6.1.1 百分號(%)通配符
%:任何字符出現任意次數
例1:找出所有以詞 Fish 起頭的產品
SELECT PRod_id, prod_nameFROM ProductsWHERE prod_name LIKE 'Fish%';
例2:可以使用多個通配符
搜索包含文本 bean bag 的值
SELECT prod_id, prod_nameFROM ProductsWHERE prod_name LIKE '%bean bag%';
例3:找出以 F 起頭、以 y 結尾的所有產品?
SELECT prod_nameFROM Products WHERE prod_name LIKE 'F%y';
【提示】根據部分信息搜索電子郵件
有一種情況下把通配符放在搜索模式中間是很有用的,就是根據郵件的一部分來查找電子郵件,例如:
WHERE email LIKE 'b%@QQ.com'
【注意】除了能匹配一個或多個字符外,%還能匹配0個字符。(0,1或多個字符)
【注意】如果產品后面有一堆空格,'F%y'應改成'F%y%';或者用函數去掉空格
【注意】WHERE prod_name LIKE '%' 不會匹配 NULL 的行
6.1.2 下劃線(_)通配符
_:只匹配單個任意字符
例4:
SELECT prod_id, prod_nameFROM ProductsWHERE prod_name LIKE '__ inch teddy bear';-- 分析:LIKE 后面跟有文本的兩個通配符
結果:2個
例5:觀察使用 % 和 _ 的不同
SELECT prod_id, prod_nameFROM ProductsWHERE prod_name LIKE '% inch teddy bear';
6.1.3 方括號([])通配符
[]:用來匹配一個字符集,它必須匹配指定位置(通配符的位置)中的一個字符
例6:找出所有名字以 J 或 M 起頭的聯系人
SELECT cust_contactFROM CustomersWHERE cust_contact LIKE '[JM]%';-- 分析:[JM] 匹配方括號中任意一個字符,它也只能匹配單個字符。[JM]之后的 % 通配符匹配第一個字符之后的所有字符
例7:查詢匹配非 J 或 M 字符開頭的任意聯系人名
SELECT cust_contactFROM CustomersWHERE cust_contact LIKE '[^JM]%';-- 分析:通過前綴字符 ^(脫字號)來否定
方法二:使用 NOT
例8:
SELECT cust_contactFROM CustomersWHERE NOT cust_contact LIKE '[JM]%';
6.2 使用通配符的技巧
【性能】通配符搜索一般比前面討論的其它搜索要耗費更長時間。
【技巧】
1.不要過度使用通配符。如果其它操作符能達到相同目的,應該使用其它操作符
2.盡量不要講它們用在搜索模式的開始處。把通配符置于開始處,搜索起來是最慢的。
3.仔細注意通配符的位置
6.3 小結
通配符的含義、使用及技巧
續集:
SQLServer:《SQL必知必會》一書的讀書筆記(五)
新聞熱點
疑難解答