1. 程式人生 > >[MySQL] 用正則表達式進行搜索

[MySQL] 用正則表達式進行搜索

lock 指定位置 查找 正則 進制 指定 order by 字符類 digi

正則表達式的作用就是匹配文本,講一個模式(正則表達式)與一個文本串進行比較。

基本字符匹配

SELECT 列名 FROM 表名 WHERE 列名 REGEXP 條件 ORDER BY 列名;

  形式與LIKE相同,只不過REGEXP後面跟的條件為正則表達式。

差別:

  LIKE匹配整個列。如果被匹配的文本在列值中出現,LIKE不會找到它,相應的行也不會被返回(除非使用通配符)。

  REGEXP在列值內進行匹配,如果被匹配的文本在列值中出現,REGEXP會找到它,相應的行將被返回。

  正則表達式不區分大小寫,如果需要區分則要使用BINARY關鍵字。如 REGEXP BINARY + 正則表達式條件。

進行OR匹配

  使用正則表達式符號‘|’將條件並列。

  例如 1000 OR 2000 = 1000|2000

匹配幾個字符之一

  使用[]來定義一組字符

  例如 [123]abc = 1abc 或 2abc 或 3abc

  [123]abc = [1|2|3]abc

匹配除指定字符外的任何東西

  [^123] 匹配除1\2\3以外的任何東西

匹配範圍

  [0123456789] = [0-9]

匹配特殊字符

  ‘.‘匹配任意字符

  \\- 表示查找-

  \\. 表示查找.

  \\\ 表示查找\

  

匹配字符類

  類              說明

 [:alnum:]           任意字母和數字[a-zA-Z0-9]

 [:alpha:]            任意字符[a-zA-Z]

 [:blank:]            空格和制表[\\t]

 [:cntrl:]            ASCII控制字符(ASCII 0到31和127)

 [:digit:]            任意數字[0-9]

 [:graph:]            與[:print:]相同,但不包含空格

 [:lower:]            任意小寫字母[a-z]

 [:print:]            任意可打印字符

 [:punct:]            既不在[:alnum:]又不在[:cntrl:]中的任意字符

 [:space:]            包含空格在內的任意空白字符[\\f\\n\\r\\t\\v]

 [:upper:]            任意大寫字母[A-Z]

 [:xdigit:]            任意十六進制數字[a-fA-F0-9]

匹配多個實例

  重復元字符

  元字符                說明

   *               0個或多個匹配

   +               1個或多個匹配{1,}

   ?                0個或1個匹配{0, 1}

   {n}               指定數目的匹配

   {n,} 不少於指定數目的匹配

   {n, m}             匹配數目的範圍(m不超過255)

定位符

  匹配指定位置的文本

  定位元字符

  元字符                  說明

   ^                  文本的開始

   $                   文本的結尾

   [[:<:]]                 詞的開始

   [[:>:]]                 詞的結尾  

  ^有兩種用法,在集合中(用[和]定義),用它來否定該集合,否則,用來指串的開始處

  

[MySQL] 用正則表達式進行搜索