《MySQL必知必會》萬用字元 ( like , % , _ ,)

凌丹妙藥發表於2020-08-16

《MySQL必知必會》萬用字元 ( like , % , _ ,)

關鍵字 LIke

WHERE 搜尋子句中使用萬用字元,必須使用 LIKE 操作符。

% 百分號萬用字元

% 表示任意字元出現任意次數。(這裡的任意當然包括 0 、1、無數)

select prod_id,prod_name
from products 
where prod_name like 'jet%';

image-20200816002354006

注意: 萬用字元搜尋是可以區分大小寫的。

使用關鍵字 Binary 即可

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

image-20200816002726946

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

image-20200816002807284

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服務

從上面例子也可以看到,是可以使用多個 ‘ % ’ 萬用字元進行搜尋的。

image-202008160034

注意,如果以上例子替換為 ‘%anvil ’ ,anvil 後跟一個空格,那將不會匹配到以上結果,為空格會干擾萬用字元匹配,這可以通過使用函式取出為空格。

like concat('%','anvil','%');

上一章說到 NULL ,同樣 NULL 不能作為有效值被 % 匹配到,NULL 對於資料庫來說是未知的,自然不能下定論 NULL 是否匹配。

_ 下劃線萬用字元

_ 只匹配單個字元。

select prod_id,prod_name
from products
where prod_name like binary '_ ton anvil';

image-20200816004214627

再次重申 , _ 總是匹配一個字元,不能多也不能少。

使用萬用字元的注意事項

正如所見,MySQL的萬用字元很有用。但這種功能是有代價的:萬用字元搜尋的處理一般要比前面討論的其他搜尋所花時間更長。這裡給出一些使用萬用字元要記住的技巧。

  • 不要過度使用萬用字元。如B果其他操作符能達到相同的目的,應該使用其他操作符。
  • 在確實需要使用萬用字元時,除非絕對有必要,否則不要把它們用在搜尋模式的開始處。把萬用字元置於搜尋模式的開始處,搜尋起來是最慢的
  • 仔細注意萬用字元的位置。如果放錯地方,可能不會返回想要的資料

不要過度使用萬用字元

不要過度使用萬用字元

不要過度使用萬用字元

以後的函式將搜尋會做到更好的處理,更高的效能。

相關文章