1. 程式人生 > >MySQL正則表示式

MySQL正則表示式

1.  Mysql的正則表示式僅僅使SQL語言的一個子集,可以匹配基本的字元、字串。 
    select * from wp_posts where post_name REGEXP 'hello';  可以檢索出列post_name中所有包含hello的行 

2.  .匹配除\n之外的任意單個字元
    select * from wp_posts where post_name REGEXP '.og';
    .是正則表示式中裡一個特殊的字元。它表示匹配一個字元,因此,bog,cog,dog等等都能匹配。

    注意: 
    關於大小寫的區分:MySQL中正則表示式匹配(從版本3.23.4後)不區分大小寫 。
    如果要區分大小寫,應該使用BINARY關鍵字,如where post_name REGEXP BINARY 'Hello .000'

3.  ^匹配字串開始位置,如查詢所有姓王的人名
    select name from 表名 where name REGEXP '^王';
   
4.  $匹配字串結束位置,如查詢所有姓名末尾是“明”的人名
    select name from 表名 where name REGEXP '明$';
    
5.  OR匹配 
    為了搜尋多個串之一,使用|
    select * from products where pro_id REGEXP '1000|2000'; 
    這樣就1000和2000都能匹配並返回,當然,使用多個|就可以匹配多個串

6. []匹配幾個字元 
    例如,這樣將要匹配[0123456789]可以匹配0到9,[1-4][4-9]也是合法的範圍。
    此外,範圍不一定只是數值的,[a-z]匹配任意字母字元 
    如查詢出w/z/s開頭的的人名
    SELECT prod_name FROM products WHERE prod_name REGEXP '^[wzs]';
    
7.  [^……],匹配不包含在[]的字元,如查詢出除chenmin之外的人名

    SELECT prod_name FROM products WHERE prod_name REGEXP '[^chenmin]';
   
8.  匹配特殊字元使用\進行轉義 
    \\.能夠匹配. 
    \\f換頁 
    \\n換行 
    \\r回車 
    \\t製表 

    \\縱向製表

   注意:為了匹配\本身,需要使用\\\

9.  匹配字元類 
     [:alnum:]    任意字母和數字(通[a-zA-Z0-9]) 
     [:alpha:]    任意字元(同[a-zA-Z]) 
     [:blank:]    空格和製表符(同[\\t]) 
     [:digit:]    任意數字(同[0-9]) 
     [:lower:]    任意小寫字母 
     [:upper:]    任意大寫字母 
     [:space:]    包括空格在內的任意空白字元

10.  匹配多個例項,關於重複元字元
 
     *      0個或者多個匹配 
     +      1個或者多個匹配(等於{1,}) 
     ?     1個或者0個匹配(等於{0,1}) 
     {n}    指定數目的匹配 
     {n,}   不少於指定數目的匹配 
     {n,m}  匹配數目的範圍(m不超過255)

a*

可以寫成a{0,}

a+

可以寫成a{1,}

a?

可以寫成a{0,1}


    例子:select prod_name from products where prod_name REGEXP '[[:DIGIT:]]{4}';
    如前所述,[:digit:]匹配任意數字,因而它為數字的一個幾何。

    [[:digit:]]{4}匹配連在一起的任意4位數字,當然,上面的例子也可以這樣寫REGEXP '[0-9][0-9][0-9][0-9]'

SELECT name FROM tab1 WHERE name REGEXP 'a*'; 匹配0個和多個a


11. 定位符 
    ^  文字的開始 
    &  文字的結尾 
    [[:<:]]   詞的開始 
    [[:>:]]   詞的結尾 

    通過使用這些定位符,能夠使REGEXP起類似LIKE的作用

查詢找到所有的名字以'st'開頭

?
1mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查詢找到所有的名字以'ok'結尾

?
1mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查詢找到所有的名字包函'mar'的字串

?
1mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查詢找到所有名稱以母音開始和'ok'結束 的

?
1mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

一個正則表示式中的可以使用以下保留字 

^

所匹配的字串以後面的字串開頭

?
12mysql> select "fonfo" REGEXP "^fo$"; -> 0(表示不匹配) mysql> select "fofo" REGEXP "^fo"; -> 1(表示匹配)

$

所匹配的字串以前面的字串結尾

?
123mysql> select "fono" REGEXP "^fono$"; -> 1(表示匹配) mysql> select "fono" REGEXP "^fo$"; -> 0(表示不匹配) .

匹配任何字元(包括新行)

?
12mysql> select "fofo" REGEXP "^f.*"; -> 1(表示匹配) mysql> select "fonfo" REGEXP "^f.*"; -> 1(表示匹配)

a*

匹配任意多個a(包括空串)

?
123mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配) mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配) mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配)

a+

匹配任意多個a(不包括空串)

?
12

相關推薦

MySQL 表示式(REGEXP)

正則表示式用來匹配文字的特殊的串(字元集合)(匹配文字,將一個模式(正則表示式)與一個文字串進行比較)。 LIKE 和 REGEXP之間的重要差別 LIKE 匹配整個列,如果被匹配的文字在列值中出現,LIKE 將不會找到它,相應的行也不會被返回(除非使用萬用字元)。而 REGEXP 在列

MySQL 表示式總結 萬用字元 元字元

總結 正則表示式和LIKE的區別聯絡,在沒有萬用字元的情況下,LIKE是對整列的一整個詞檢索,如果有一個字母匹配不上就不會檢索出來,而正則表示式是隻要列中有包含檢索詞的內容,就輸出行。如果檢索表示式加上^和$,兩者作用相同 正則表示式萬用字元: REGEXP ‘’ | [

mysql表示式,實現多個欄位匹配多個like模糊查詢

現在有這麼一個需求 一個questions表,欄位有題目(TestSubject),選項(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求欄位不包含png,jpg,jpeg,gif  正常情況下會這麼寫 select * from questions

MySQL表示式

1.  Mysql的正則表示式僅僅使SQL語言的一個子集,可以匹配基本的字元、字串。     select * from wp_posts where post_name REGEXP 'hello';  可以檢索出列post_name中所有包含hello的行 2.  .匹配

DB-MySQLMySQL 表示式

ylbtech-DB-MySQL:MySQL 正則表示式   1.返回頂部 1、 MySQL 正則表示式 在前面的章節我們已經瞭解到MySQL可以通過 LIKE ...% 

MySQL 表示式

介紹 正則表示式用來描述或者匹配符合規則的字串。它的用法和like比較相似,但是它又比like更強大,能夠實現一些很特殊的規則匹配;正則表示式需要使用REGEXP命令,匹配上返回"1"匹配不上返回"0",預設不加條件REGEXP相當於like '%%'。在前面加上NOT相當於NOT LIKE。

MySQL表示式使用——MySQL系列(四)

使用REGEXP關鍵字 1、基本字元匹配 SELECT prod_name From Products Where prod_name REGEXP'.000' LIKE和REGEXP區別 LIKE會匹配這個列,而REGEXP會在列值內進行匹配 在MySQL中正則表示式

mysql 資料操作 單表查詢 使用表示式查詢

      SELECT * FROM employee WHERE name REGEXP '^ale'; SELECT * FROM employee WHERE name REGEXP 'on$'; SELECT * FROM employee WHERE nam

mysql jdbc url模式 表示式

https://blog.csdn.net/youcijibi/article/details/77965487?locationNum=7&fps=1 jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1

MySQL UNION、排序、分組、連線、NULL值處理和表示式

UNION SQL UNION 下面的SQL語句從product和orderdetail表中選取所有不同的pCode(只有不同值) SELECT pCode FROM product UNION SELECT pCode FROM orderdetail ORDER BY p

MySQL之聚合查詢、子查詢、合併查詢、表示式查詢詳解

一:聚合查詢 1:MySQL之聚合函式 基本表orderitems表結構如下: 2:count()函式 2.1:count()函式用來統計記錄的條數 2.2:與group by 關鍵字一起使用 SQL語句如下: 查詢的結果如下: 3:su

MySQL UNION、排序、分組、連線、NULL值處理和表示式

UNION SQL UNION 下面的SQL語句從product和orderdetail表中選取所有不同的pCode(只有不同值) SELECT pCode FROM product UNION SEL

Mysql表示式Regexp常見用法

Mysql中Regexp常見用法 模糊匹配,包含特定字串 # 查詢content欄位中包含“車友俱樂部”的記錄 select * from club_content where content regexp '車友俱樂部' # 此時的regexp與lik

MySQL中REGEXP表示式使用大全

以前我要查詢資料都是使用like後來發現mysql中也有正則表示式了並且感覺效能要好於like,下面我來給大家分享一下mysql REGEXP正則表示式使用詳解,希望此方法對大家有幫助。 MySQL採用Henry Spencer的正則表示式實施,其目標是符合POSIX

MySQL使用表示式查詢

正則表示式是用某種模式去匹配一類字串的一個方式。正則表示式的查詢能力比通配字元的查詢能力更強大,而且更加的靈活。 建立資料表tb_book(圖書資訊表),並新增相關資料,用於後續的示例使用。 CREATE TABLE tb_book ( id INT AUTO_INCREMENT PR

表示式從攜程頁面原始碼提取酒店資訊並插入mysql資料庫

file_regEx_mysql_io desc: 從txt檔案中讀取字串,通過正則表示式提取關鍵字,並插入mysql資料庫的一個小demo. 前言 ​ 因為最近公司需要用到攜程上面的一些酒店資料,由於沒有接觸過爬蟲,所以只能投機取巧去爬html原始檔的程式碼,然後

mysql學習之表示式查詢

正則表示式關鍵字:REGEXP               select procId,ProcName from products where procName REGEXP ‘abc’ 等同於  select procId,ProcName from prodicts

mysql 身份證明號碼 表示式

匹配15和18位 select * from sfzmhm_table where sfzmhm regexp '^[1-9][[:digit:]]{7}((0[[:digit:]])|(1[0-2]

mysql中使用表示式查詢

基本形式 屬性名 regexp ‘匹配方式’ 正則表示式的模式字元 ^ 匹配字元開始的部分 eg1:  從info表name欄位中查詢以L開頭的記錄        select * from info where name regexp '^L'; eg2:  從info表name欄位中查詢以

mysql 的like 和表示式 regexp

萬用字元 含義 % 代表任意多個字元