MySQL正規表示式初步

2021-06-21 07:19:28 字數 3455 閱讀 9160

你還可以學習:mysql學習精粹

我們知道,在sql之中,可以用 like 這個謂詞(表示式) 來進行模糊檢索,並支援 %,?,_等佔位符.

但是,這個模糊檢索的功能有很多限制,簡單來說就是太模糊了。

在mysql中提供了 regexp 關鍵字來支援正規表示式,當然,只是一些很簡單的正則啦。

首先,我們構造一些測試資料。

-- 建表

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;

增加一些測試資料:

-- 插入一些測試資料:

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. 最簡單的查詢:

select *

from t_regcustomer;

2. 指定列名查詢

select c.id, c.name, c.age

from t_regcustomer c

;

3. 對查詢結果排序

select c.id, c.name, c.age

from t_regcustomer c

order by c.age asc

;

4. like 模糊檢索

%匹配任意數量(0~n)的任意字元

select c.id, c.name, c.age

from t_regcustomer c

where c.name like '%鵬%'

order by c.age asc

;

5. regexp 關鍵字

.匹配任意乙個字元

注意此處因為沒有起始(

^)和結束(

$)限定符,所以只要列中出現的行都會被檢索出來.

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. 大小寫敏感

select c.id, c.name, c.age

from t_regcustomer c

where c.name regexp binary '^s'

order by c.age asc

;

8. 正則或運算

select c.id, c.name, c.age

from t_regcustomer c

where c.name regexp binary 'a|s'

order by c.name asc

;

9. 組運算正則

[123] 表示 1、2、3這3個數字之一出現即可

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. 轉義

使用 \\ 

可以轉義

\.()?-| 以及分頁,換行符號等

請查閱 《mysql必知必會》 68頁 正規表示式

正規表示式初步

正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配,python 自1.5版本起增加了re 模組,它提供 perl 風格的正規表示式模式。compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。1 基本常用的...

mysql正規表示式 MySQL正規表示式

正規表示式是為複雜搜尋指定模式的強大方式。正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello匹配hello。非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串匹配。例如,正規表示式hello word匹配字串hello或字串w...

正規表示式初步學習

正規表示式,又稱規則表示式 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。使用場景 在python中使用正則需要匯入re包 import re首先我們來看兩個例子來體驗一下正...