《MySQL必知必會》通配符 ( like , % , _ ,)
- 2020 年 8 月 16 日
- 筆記
- 《MySQL必知必會》
《MySQL必知必會》通配符 ( like , % , _ ,)
關鍵字 LIke
WHERE 搜索子句中使用通配符,必須使用 LIKE 操作符。
% 百分號通配符
% 表示任意字元出現任意次數。(這裡的任意當然包括 0 、1、無數)
select prod_id,prod_name
from products
where prod_name like 'jet%';

注意: 通配符搜索是可以區分大小寫的。
使用關鍵字 Binary 即可
select prod_id,prod_name
from products
where prod_name like binary '%S%';

select prod_id,prod_name
from products
where prod_name like binary '%s%';

show viriables like '%lower%';
查看是否區分大小寫;
ower_case_table_names參數詳解:
lower_case_table_names = 0
其中 0:區分大小寫,1:不區分大小寫
MySQL在Linux下資料庫名、表名、列名、別名大小寫規則是這樣的:
1、資料庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變數名也是嚴格區分大小寫的;修改不區分大小寫,在my.cnf中的[mysqld]後面添加lower_case_table_names=1,重啟MYSQL服務
從上面例子也可以看到,是可以使用多個 『 % 』 通配符進行搜索的。

注意,如果以上例子替換為 『%anvil 』 ,anvil 後跟一個空格,那將不會匹配到以上結果,為空格會干擾通配符匹配,這可以通過使用函數取出為空格。
like concat('%','anvil','%');
上一章說到 NULL ,同樣 NULL 不能作為有效值被 % 匹配到,NULL 對於資料庫來說是未知的,自然不能下定論 NULL 是否匹配。
_ 下劃線通配符
_ 只匹配單個字元。
select prod_id,prod_name
from products
where prod_name like binary '_ ton anvil';

再次重申 , _ 總是匹配一個字元,不能多也不能少。
使用通配符的注意事項
正如所見,MySQL的通配符很有用。但這種功能是有代價的:通配符搜索的處理一般要比前面討論的其他搜索所花時間更長。這裡給出一些使用通配符要記住的技巧。
- 不要過度使用通配符。如B果其他操作符能達到相同的目的,應該使用其他操作符。
- 在確實需要使用通配符時,除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置於搜索模式的開始處,搜索起來是最慢的。
- 仔細注意通配符的位置。如果放錯地方,可能不會返回想要的數據。
不要過度使用通配符
不要過度使用通配符
不要過度使用通配符
以後的函數將搜索會做到更好的處理,更高的性能。

