<li id="jut4n"></li>
  • 系統城裝機大師 - 固鎮縣祥瑞電腦科技銷售部宣傳站!

    當前位置:首頁 > 數據庫 > Mysql > 詳細頁面

    MySQL通配符與正則表達式搜過濾數據詳解

    時間:2022-10-02來源:www.ship-models.net作者:電腦系統城

    通配符過濾

    通配符:用來匹配值的一部分特殊字符。

    通配符可以在搜索模式中任意位置使用,并且可以使用多個通配符。

    搜索模式:由字面值、通配符或者兩者組合構成的搜索條件。

    語法(使用LIKE操作符):

    1
    2
    3
    SELECT [column_name]
    FROM [table_name]
    WHERE [column_name] LIKE '[string]';

    通配符 %

    ‘%’ 表示任何字符出現任意次數,例如 LIKE ‘jet%’ 匹配詞jet起頭的值,‘%anvil%’ 匹配任何位置包含文本anvil的值。

    注意

    • 根據MySQL的配置方式,搜索可以是區分大小寫的;
    • ‘%’ 可以匹配0個字符;
    • 值的尾空格會干擾通配符匹配,最好在搜索模式最后附加一個%;
    • ‘%’ 不能匹配NULL。

    通配符 _

    ‘_’ 只匹配單個字符。

    技巧

    • 不要過度使用通配符,因為這會很花時間;
    • 如有必要,使用通配符匹配在搜索的最后;

    正則表達式過濾

    語法(使用REGEXP操作符):

    1
    2
    3
    SELECT [column_name]
    FROM [table_name]
    WHERE [column_name] REGEXP '[string]';

    字符匹配

    基本匹配:‘.’ 表示匹配任意一個字符。

    基本字符匹配舉例

    正則表達式匹配不區分大小寫,使用BINARY關鍵字區分,例如WHERE prod_name REGEXP BINARY ‘JetPack .000’。

    • OR匹配:‘1000|2000’ 表示匹配1000或者2000。
    • 多字符匹配:‘[123]’ 表示匹配 1 或 2 或 3,是 [1|2|3] 的縮寫。

     

    但是 ‘[1|2|3] Ton’ 和 ‘1|2|3 Ton’ 匹配結果并不相同,后者表示匹配 1 或 2 或 3 Ton。

    • 否定字符匹配:‘[^123]’ 表示匹配除這些字符外的任何東西。
    • 匹配范圍:‘[0-9]’ 與 ‘[0123456789]’ 相同。‘[a-z]’ 匹配任意字母字符。
    • 匹配特殊字符:使用轉義字符 ‘\’,例如 ‘\.’ 、’ \|’ 、‘\[’ 、‘\’。

    其他字符

    空白元字符

    元字符 說明
    \\f 換頁
    \\n 換行
    \\r 回車
    \\t 制表
    \\v 縱向制表

    字符類

    說明
    [:alnum:] 任意字母和數字
    [:alpha:] 任意字符(同[a-zA-Z])
    [:blank:] 空格和制表
    [:cntrl:] ASCII控制字符(0-31和127)
    [:digit:] 任意數字
    [:graph:] 與[:print:]相同,但是不包括空格
    [:lower:] 任意小寫字母
    [:print:] 任意可打印字符
    [:punct:] 既不在[:alnum:]也不在[:cntrl:] 中的任意字符
    [:space:] 包括空格在內的任意空白字符
    [:upper:] 任意大寫字符
    [:xdigit:] 任意十六進制數字

    重復元字符

    元字符 說明
    * 0個或多個匹配
    + 1個或多個匹配
    ? 0個或多個匹配
    {n} 指定數目匹配
    {n, } 不少于指定數目的匹配
    {n, m} 匹配數目的范圍(m不超過255)

    定位元字符

    元字符 說明
    ^ 文本的開始
    $ 文本的結尾
    [[:<:]] 詞的開始
    [[:>:]] 詞的結尾

    舉例:

    1
    2
    3
    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '^[0-9\\.]';

    對比

    如果匹配文本在列值中出現,則LIKE不會匹配,但是REGEXP會匹配。

    LIKE與REGEXP對比

    可以通過用 ^ 開始每個表達式,用 $ 結束每個表達式,使得REGEXP的作用和LIKE一樣。

    正則表達式測試

    1 SELECT 'hello' REGEXP '[0-9]';  //結果返回0

    總結

    到此這篇關于MySQL通配符與正則表達式搜過濾數據的文章就介紹到這了

    分享到:

    相關信息

    系統教程欄目

    欄目熱門教程

    人氣教程排行

    站長推薦

    熱門系統下載

    淑芬两腿间又痒了