1. 程式人生 > >Mysql| 使用萬用字元進行模糊查詢(like,%,_)

Mysql| 使用萬用字元進行模糊查詢(like,%,_)

萬用字元的分類:
%百分號萬用字元: 表示任何字元出現任意次數(可以是0次).
_下劃線萬用字元:表示只能匹配單個字元,不能多也不能少,就是一個字元.

like操作符:
LIKE作用是指示mysql後面的搜尋模式是利用萬用字元而不是直接相等匹配進行比較.
注意: 如果在使用like操作符時,後面的沒有使用通用匹配符效果是和=一致的,SELECT * FROM products WHERE products.prod_name like '1000';只能匹配的結果為1000,而不能匹配像JetPack 1000這樣的結果.

1)%萬用字元使用:
匹配以"yves"開頭的記錄:(包括記錄"yves"

)
SELECT * FROM products WHERE products.prod_name like 'yves%';

匹配包含"yves"的記錄(包括記錄"yves")
SELECT * FROM products WHERE products.prod_name like '%yves%';

匹配以"yves"結尾的記錄(包括記錄"yves",不包括記錄"yves ",也就是yves後面有空格的記錄,這裡需要注意)
SELECT * FROM products WHERE products.prod_name like '%yves';

2)_萬用字元使用:
SELECT * FROM products WHERE products.prod_name like '_yves';


匹配結果為: 像"yyves"這樣記錄.

SELECT * FROM products WHERE products.prod_name like 'yves__';
匹配結果為: 像"yvesHe"這樣的記錄.(一個下劃線只能匹配一個字元,不能多也不能少)

注意事項:

  • 注意大小寫,在使用模糊匹配時,也就是匹配文字時,mysql是可能區分大小的,也可能是不區分大小寫的,這個結果是取決於使用者對MySQL的配置方式.如果是區分大小寫,那麼像YvesHe這樣記錄是不能被"yves__"這樣的匹配條件匹配的.
  • 注意尾部空格,"%yves"是不能匹配"heyves "這樣的記錄的.
  • 注意NULL
    ,%萬用字元可以匹配任意字元,但是不能匹配NULL,也就是說SELECT * FROM products WHERE products.prod_name like '%;是匹配不到products.prod_name為NULL的的記錄.

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

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