天天看點

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的通配符很有用。但這種功能是有代價的:通配符搜尋的處理一般要比前面讨論的其他搜尋所花時間更長。這裡給出一些使用通配符要記住的技巧。

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

繼續閱讀