你還可以學習: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首先我們來看兩個例子來體驗一下正...