MySQL正則表達(dá)式入門教程

字號(hào):


    這篇文章主要介紹了MySQL正則表達(dá)式,一個(gè)簡(jiǎn)單的MySQL正則表達(dá)式入門教程,需要的朋友可以參考下:
    我們知道,在SQL之中,可以用 like 這個(gè)謂詞(表達(dá)式) 來進(jìn)行模糊檢索,并支持 %,?,_等占位符.
    但是,這個(gè)模糊檢索的功能有很多限制,簡(jiǎn)單來說就是太模糊了。
    在MySQL中提供了 REGEXP 關(guān)鍵字來支持正則表達(dá)式,當(dāng)然,只是一些很簡(jiǎn)單的正則啦。
    首先,我們構(gòu)造一些測(cè)試數(shù)據(jù).
    代碼如下:
    -- 建表
    USE test;
    DROP TABLE IF EXISTS t_regcustomer;
    CREATE TABLE t_regcustomer (
     id INT(10) AUTO_INCREMENT
     ,name VARCHAR(256)
     ,age INT(10)
     , PRIMARY KEY(id)
    ) COLLATE='utf8_general_ci' ENGINE=InnoDB;
    增加一些測(cè)試數(shù)據(jù):
    復(fù)制代碼 代碼如下:
    -- 插入一些測(cè)試數(shù)據(jù):
    TRUNCATE TABLE t_regcustomer;
    INSERT INTO t_regcustomer(name, age) VALUES ('王明',20);
    INSERT INTO t_regcustomer(name, age) VALUES ('王大',21);
    INSERT INTO t_regcustomer(name, age) VALUES ('小王',22);
    INSERT INTO t_regcustomer(name, age) VALUES ('小王2',22);
    INSERT INTO t_regcustomer(name, age) VALUES ('敲不死',23);
    INSERT INTO t_regcustomer(name, age) VALUES ('憨憨',24);
    INSERT INTO t_regcustomer(name, age) VALUES ('憨憨2',24);
    INSERT INTO t_regcustomer(name, age) VALUES ('郭靖名',25);
    INSERT INTO t_regcustomer(name, age) VALUES ('郭靖2',25);
    INSERT INTO t_regcustomer(name, age) VALUES ('郭靖3',25);
    INSERT INTO t_regcustomer(name, age) VALUES
    ('郭得缸',25)
    ,('大鵬',20)
    ,('大鵬2',20)
    ,('大鵬3',20)
    ,('二鵬',19)
    ,('鵬鵬',18)
    ,('鵬鵬1',18)
    ,('小鵬',17)
    ,('AAA',17)
    ,('aaa',17)
    ,('SS',17)
    ,('s2',17)
    ,('ss',17)
    1. 最簡(jiǎn)單的查詢:
    復(fù)制代碼 代碼如下:
    SELECT * 
    FROM t_regcustomer;
    2. 指定列名查詢
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    ;
    3. 對(duì)查詢結(jié)果排序
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    ORDER BY c.age ASC 
    ;
    4. like 模糊檢索
    %匹配任意數(shù)量(0~n)的任意字符
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name LIKE '%鵬%' 
    ORDER BY c.age ASC 
    ;
    5. regexp 關(guān)鍵字
    .匹配任意一個(gè)字符
    注意此處因?yàn)闆]有起始(^)和結(jié)束($)限定符,所以只要列中出現(xiàn)的行都會(huì)被檢索出來.
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name REGEXP '.鵬.' 
    ORDER BY c.age ASC 
    ;
    6. 正則起始限定符
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name REGEXP '^王' 
    ORDER BY c.age ASC 
    ;
    7. 大小寫敏感
    復(fù)制代碼 代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name REGEXP BINARY '^s' 
    ORDER BY c.age ASC 
    ;
    8. 正則或運(yùn)算
    復(fù)制代碼 代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name REGEXP BINARY 'a|s' 
    ORDER BY c.name ASC 
    ;
    9. 組運(yùn)算正則
    [123] 表示 1、2、3這3個(gè)數(shù)字之一出現(xiàn)即可
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name REGEXP BINARY '鵬[123]' 
    ORDER BY c.name ASC
    [1-9] 匹配 1、2、3、.... 8、9
    代碼如下:
    SELECT c.id, c.name, c.age 
    FROM t_regcustomer c 
    WHERE c.name REGEXP BINARY '鵬[1-9]' 
    ORDER BY c.name ASC 
    ;
    10. 轉(zhuǎn)義
    使用 \\
    可以轉(zhuǎn)義 \.[]()?-| 以及分頁,換行符號(hào)等