MYSQL必知必會讀書筆記 第九章 使用Regex過濾資料

來源:互聯網
上載者:User

標籤:

  • 正則與LIKE的區別
  •  Mysql的Regex僅僅使SQL語言的一個子集,可以匹配基本的字元、字串。
    例如:select * from wp_posts where post_name REGEXP‘hello‘,可以檢索出列post_name中所有包含hello的行
        REGEXP‘.og‘ .是Regex中裡一個特殊的字元。它表示匹配一個字元,因此,dog,hog,mog等等都能匹配。

    注意:
       關於LIKE和REGEXP的區別:LIKE匹配整個列。如果被匹配的文本僅在列值中出現,LIKE並不會找到它,相應的行也不會返回(當然,使用萬用字元除外)。而REGEXP在列值內進行匹配,如果被匹配的匹配的文本在列值中出現,REGEXP將會找到它,相應的行將被返回,這時一個非常重要的差別(當然,如果適應定位器號^和$,可以實現REGEXP匹配整個列而不是列的子集)。
       關於大小寫區分:MySQL中Regex匹配(從版本3.23.4後)不區分大小寫。如果要區分大小寫,應該使用BINARY關鍵字,如where post_name REGEXP BINARY ‘Hello.000‘
  • 基底字元匹配
    檢索列prod_name 包含文本1000的所有行:

  • 進行OR匹配
    相當於:或操作 “|”

  • 匹配幾個字元之一
    只想匹配特定的字元。 可以通過指定一組用[]括起來的字元來完成。

    [456]定義了一組字元,他的意思是匹配4或5或6. []是另一種形式的OR語句。[456][4|5|6]的縮寫。
  • 匹配範圍
    [1-3] a-z都是合法的範圍、
  • 匹配特殊字元
    Regex語言由特殊含義的特殊字元構成。

    . 在Regex中表示匹配任何一個字元

    比如匹配prod_name中包括on字串的行:

    那如何匹配.,[],|,-

    為了匹配特殊字元,必須用\\為前置。 比如\\.表示尋找·

  • 匹配字元類

  • 匹配多個執行個體

    再比如 匹配連在一起的4位元字:

    sticks? : s後的使s可選,因為匹配它前面緊跟的任何字元的0次或者1次出現。

    [:digit:]匹配任一數字,因而它為數位一個集合。{4}確切地要求它前面的字元出現4次。
    所以[:digit:]{4}匹配連在一起的任意4位元字。

  • 定位器
    目前為止所有例子都是匹配一個串中任意為止的文本。為了匹配特定為止的文本,需要使用定位器。


也可以在不使用資料庫的情況下測試Regex的正確性:

SELECT 來測試Regex,REGEXP檢查總是返回0或1,

SELECT  ’HELLO‘  REGEXP ’0‘//返回為0


MYSQL必知必會讀書筆記 第九章 使用Regex過濾資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.