@author: Tobin @date: 2019/10/28 19:51:40git
MySQL僅支持多數正則表達式實現的一個很小的子集。正則表達式
# 檢索列prod_name包含文本1000的全部行 SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name; # 這裏注意和LIKE的差異。LIKE匹配'1000'是全匹配。必須等於1000才返回值。而REGEXP是隻要包含1000就能夠。 # 匹配任意一個字符 SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name; # MySQL中的正則表達式匹配,自版本3.32.4後不區分大小寫。大寫和小寫都匹配。爲區分大小寫,能夠使用BINARY關鍵字。 # 如 WHERE prod_name REGEXP BINARY 'JetPack .000' # 進行OR匹配,使用'|' SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name; # 匹配幾個字符之一 # 至關於另外一種形式的|,'[1|2|3] Ton'加括號,不然匹配1,2,3 Ton中的一個 # [^123]表示不匹配其中的任意一個字符 SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name; # 匹配多個字符或者數字的簡便寫法 SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name; # 轉義\\ # \\f 換頁 \\n 換行 \\r 回車 \\t 製表 \\v 縱向製表 \\\匹配反斜槓自己 SELECT prod_name FROM products WHERE prod_name REGEXP '\\.' ORDER BY prod_name; # 匹配字符類 # 舉例。好比[:alnum:] 任意字符和數字,[:alpha:]任意字符 # 匹配多個實例 # * 0個或者多個匹配 # + 1個或者多個匹配 # ? 0個或者1個匹配 # {n} 指定數目的匹配 # {n,} 很多於指定數目的匹配 # {n,m} 匹配數目的範圍 (m不超過255) SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name; # 匹配連在一塊兒的任意4位數字 SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name; # 定位符 # ^ 文本的開始 $ 文本的結尾 [[:<:]] 詞的開始 [[:>:]]詞的結尾 SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name; # ^在括號內是否認該集合,在外面就是定位符 # 用^開頭,$結尾能夠使得REGEXP等價於LIKE