《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果其他操作符能達到相同的目的,應該使用其他操作符。
- 在確實需要使用萬用字元時,除非絕對有必要,否則不要把它們用在搜尋模式的開始處。把萬用字元置於搜尋模式的開始處,搜尋起來是最慢的。
- 仔細注意萬用字元的位置。如果放錯地方,可能不會返回想要的資料。
不要過度使用萬用字元
不要過度使用萬用字元
不要過度使用萬用字元
以後的函式將搜尋會做到更好的處理,更高的效能。