《MYSQL教程mysql數(shù)據(jù)庫replace、regexp的用法》要點(diǎn):
本文介紹了MYSQL教程mysql數(shù)據(jù)庫replace、regexp的用法,希望對您有用。如果有疑問,可以聯(lián)系我們。
replace、regexp的用法
0 Comments | This entry was posted on Apr 08 2010
mysql replace用法
1.replace into
replace into table (id,name) values('1′,'aa'),('2′,'bb')
此語句的作用是向表table中插入兩條記錄.如果主鍵id為1或2不存在
就相當(dāng)于
insert into table (id,name) values('1′,'aa'),('2′,'bb')
如果存在相同的值則不會(huì)插入數(shù)據(jù)
2.replace(object,search,replace)
把object中出現(xiàn)search的全部替換為replace
select replace('www.163.com','w','Ww')―>WwWwWw.163.com
例:把表table中的name字段中的aa替換為bb
update table set name=replace(name,'aa','bb')
――――――――――――――――――――――――――C
由MySQL提供的模式匹配的其它類型是使用擴(kuò)展正則表達(dá)式.當(dāng)你對這類模式進(jìn)行匹配測試時(shí),使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它們是同義詞).
擴(kuò)展正則表達(dá)式的一些字符是:
? ‘.'匹配任何單個(gè)的字符.
? 字符類“[...]”匹配在方括號(hào)內(nèi)的任何字符.例如,“[abc]”匹配“a”、“b”或“c”.為了命名字符的范圍,使用一個(gè)“-”.“[a-z]”匹配任何字母,而“[0-9]”匹配任何數(shù)字.
? “ * ”匹配零個(gè)或多個(gè)在它前面的字符.例如,“x*”匹配任何數(shù)量的“x”字符,“[0-9]*”匹配任何數(shù)量的數(shù)字,而“.*”匹配任何數(shù)量的任何字符.
如果REGEXP模式與被測試值的任何地方匹配,模式就匹配(這不同于LIKE模式匹配,只有與整個(gè)值匹配,模式才匹配).
為了定位一個(gè)模式以便它必須匹配被測試值的開始或結(jié)尾,在模式開始處使用“^”或在模式的結(jié)尾用“$”.
為了說明擴(kuò)展正則表達(dá)式如何工作,下面使用REGEXP重寫上面所示的LIKE查詢:
為了找出以“b”開頭的名字,使用“^”匹配名字的開始:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^b';
+――C+――C+―――+――+――――+――――+
| name| owner | species | sex | birth | death |
+――C+――C+―――+――+――――+――――+
| Buffy | Harold | dog| f | 1989-05-13 | NULL|
| Bowser | Diane | dog| m | 1989-08-31 | 1995-07-29 |
+――C+――C+―――+――+――――+――――+
如果你想強(qiáng)制使REGEXP比較區(qū)分大小寫,使用BINARY關(guān)鍵字使其中一個(gè)字符串變?yōu)槎M(jìn)制字符串.該查詢只匹配名稱首字母的小寫‘b'.
mysql> SELECT * FROM pet WHERE name REGEXP BINARY ‘^b';
為了找出以“fy”結(jié)尾的名字,使用“$”匹配名字的結(jié)尾:
mysql> SELECT * FROM pet WHERE name REGEXP ‘fy$';
+――C+――C+―――+――+――――+――-+
| name| owner | species | sex | birth | death |
+――C+――C+―――+――+――――+――-+
| Fluffy | Harold | cat| f | 1993-02-04 | NULL |
| Buffy | Harold | dog| f | 1989-05-13 | NULL |
+――C+――C+―――+――+――――+――-+
為了找出包含一個(gè)“w”的名字,使用以下查詢:
mysql> SELECT * FROM pet WHERE name REGEXP ‘w';
+―――-+――-+―――+――+――――+――――+
| name| owner | species | sex | birth | death |
+―――-+――-+―――+――+――――+――――+
| Claws | Gwen | cat| m | 1994-03-17 | NULL|
| Bowser| Diane | dog| m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL|
+―――-+――-+―――+――+――――+――――+
既然如果一個(gè)正則表達(dá)式出現(xiàn)在值的任何地方,其模式匹配了,就不必在先前的查詢中在模式的兩側(cè)放置一個(gè)通配符以使得它匹配整個(gè)值,就像你使用了一個(gè)SQL模式那樣.
為了找出包含正好5個(gè)字符的名字,使用“^”和“$”匹配名字的開始和結(jié)尾,和5個(gè)“.”實(shí)例在兩者之間:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^…..$';
+――-+――C+―――+――+――――+――-+
| name | owner | species | sex | birth | death |
+――-+――C+―――+――+――――+――-+
| Claws | Gwen| cat| m | 1994-03-17 | NULL |
| Buffy | Harold | dog| f | 1989-05-13 | NULL |
+――-+――C+―――+――+――――+――-+
你也可以使用“{n}”“重復(fù)n次”操作符重寫前面的查詢:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^.{5}$';
+――-+――C+―――+――+――――+――-+
| name | owner | species | sex | birth | death |
+――-+――C+―――+――+――――+――-+
| Claws | Gwen| cat| m | 1994-03-17 | NULL |
| Buffy | Harold | dog| f | 1989-05-13 | NULL |
+――-+――C+―――+――+――――+――-+
附錄G:MySQL正則表達(dá)式 提供了關(guān)于正則表達(dá)式的句法的詳細(xì)信息.
3.3.4.8. 計(jì)數(shù)行數(shù)據(jù)庫經(jīng)常用于回答這個(gè)問題,“某個(gè)類型的數(shù)據(jù)在表中出現(xiàn)的頻度?”例如,你可能想要知道你有多少寵物,或每位主人有多少寵物,或你可能想要對你的動(dòng)物進(jìn)行各種類型的普查.
計(jì)算你擁有動(dòng)物的總數(shù)目與“在pet表中有多少行?”是同樣的問題,因?yàn)槊總€(gè)寵物有一個(gè)記錄.COUNT(*)函數(shù)計(jì)算行數(shù),所以計(jì)算動(dòng)物數(shù)目的查詢應(yīng)為:
mysql> SELECT COUNT(*) FROM pet;
+―――-+
| COUNT(*) |
+―――-+
| 9 |
+―――-+
在前面,你檢索了擁有寵物的人的名字.如果你想要知道每個(gè)主人有多少寵物,你可以使用COUNT( )函數(shù):
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+――C+―――-+
| owner | COUNT(*) |
+――C+―――-+
| Benny | 2 |
| Diane | 2 |
| Gwen| 3 |
| Harold | 2 |
+――C+―――-+
注意,使用GROUP BY對每個(gè)owner的所有記錄分組,沒有它,你會(huì)得到錯(cuò)誤消息:
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),…)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT( )和GROUP BY以各種方式分類你的數(shù)據(jù).下列例子顯示出進(jìn)行動(dòng)物普查操作的不同方式.
每種動(dòng)物的數(shù)量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+―――+―――-+
| species | COUNT(*) |
+―――+―――-+
| bird | 2 |
| cat| 2 |
| dog| 3 |
| hamster | 1 |
| snake| 1 |
+―――+―――-+
每種性別的動(dòng)物數(shù)量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+――+―――-+
| sex | COUNT(*) |
+――+―――-+
| NULL | 1 |
| f | 4 |
| m | 4 |
+――+―――-+
(在這個(gè)輸出中,NULL表示“未知性別”.)
按種類和性別組合的動(dòng)物數(shù)量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+―――+――+―――-+
| species | sex | COUNT(*) |
+―――+――+―――-+
| bird | NULL | 1 |
| bird | f | 1 |
| cat| f | 1 |
| cat| m | 1 |
| dog| f | 1 |
| dog| m | 2 |
| hamster | f | 1 |
| snake| m |1 |
+―――+――+―――-+
若使用COUNT( ),你不必檢索整個(gè)表.例如, 前面的查詢,當(dāng)只對狗和貓進(jìn)行時(shí),應(yīng)為:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = ‘dog' OR species = ‘cat'
-> GROUP BY species, sex;
+―――+――+―――-+
| species | sex | COUNT(*) |
+―――+――+―――-+
| cat| f | 1 |
| cat| m | 1 |
| dog| f | 1 |
| dog| m | 2 |
+―――+――+―――-+
或,如果你僅需要知道已知性別的按性別的動(dòng)物數(shù)目:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE sex IS NOT NULL
-> GROUP BY species, sex;
+―――+――+―――-+
| species | sex | COUNT(*) |
+―――+――+―――-+
| bird | f | 1 |
| cat| f | 1 |
| cat| m | 1 |
| dog| f | 1 |
| dog| m | 2 |
| hamster | f | 1 |
| snake| m | 1 |
+―――+――+―――-+
3.3.4.9. 使用1個(gè)以上的表
pet表追蹤你有哪個(gè)寵物.如果你想要記錄其它相關(guān)信息,例如在他們一生中看獸醫(yī)或何時(shí)后代出生,你需要另外的表.這張表應(yīng)該像什么呢?需要:
? 它需要包含寵物名字以便你知道每個(gè)事件屬于哪個(gè)動(dòng)物.
? 需要一個(gè)日期以便你知道事件是什么時(shí)候發(fā)生的.
? 需要一個(gè)描述事件的字段.
? 如果你想要對事件進(jìn)行分類,則需要一個(gè)事件類型字段.
綜合上述因素,event表的CREATE TABLE語句應(yīng)為:
mysql> CREATE TABLE event (name VARCHAR(20), date DATE,
-> type VARCHAR(15), remark VARCHAR(255));
對于pet表,最容易的方法是創(chuàng)建包含信息的用定位符分隔的文本文件來裝載初始記錄:
name
date
type
remark
Fluffy
1995-05-15
litter
4 kittens, 3 female, 1 male
Buffy
1993-06-23
litter
5 puppies, 2 female, 3 male
Buffy
1994-06-19
litter
3 puppies, 3 female
Chirpy
1999-03-21
vet
needed beak straightened
Slim
1997-08-03
vet
broken rib
Bowser
1991-10-12
kennel
Fang
1991-10-12
kennel
Fang
1998-08-28
birthday
Gave him a new chew toy
Claws
1998-03-17
birthday
Gave him a new flea collar
Whistler
1998-12-09
birthday
First birthday
采用如下方式裝載記錄:
mysql> LOAD DATA LOCAL INFILE ‘event.txt' INTO TABLE event;
根據(jù)你從已經(jīng)運(yùn)行在pet表上的查詢中學(xué)到的,你應(yīng)該能執(zhí)行對event表中記錄的檢索;原理是一樣的.但是什么時(shí)候event表本身不能回答你可能問的問題呢?
當(dāng)他們有了一窩小動(dòng)物時(shí),假定你想要找出每只寵物的年齡.我們前面看到了如何通過兩個(gè)日期計(jì)算年齡.event表中有母親的生產(chǎn)日期,但是為了計(jì)算母親的年齡,你需要她的出生日期,存儲(chǔ)在pet表中.說明查詢需要兩個(gè)表:
mysql> SELECT pet.name,
-> (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,
-> remark
-> FROM pet, event
-> WHERE pet.name = event.name AND event.type = ‘litter';
+――C+――+―――――――――C+
| name| age | remark |
+――C+――+―――――――――C+
| Fluffy | 2 | 4 kittens, 3 female, 1 male |
| Buffy | 4 | 5 puppies, 2 female, 3 male |
| Buffy | 5 | 3 puppies, 3 female|
+――C+――+―――――――――C+
關(guān)于該查詢要注意的幾件事情:
FROM子句列出兩個(gè)表,因?yàn)椴樵冃枰獜膬蓚€(gè)表提取信息.
當(dāng)從多個(gè)表組合(聯(lián)結(jié))信息時(shí),你需要指定一個(gè)表中的記錄怎樣能匹配其它表的記錄.這很簡單,因?yàn)樗鼈兌加幸粋€(gè)name列.查詢使用WHERE子句基于name值來匹配2個(gè)表中的記錄.
因?yàn)閚ame列出現(xiàn)在兩個(gè)表中,當(dāng)引用列時(shí),你一定要指定哪個(gè)表.把表名附在列名前即可以實(shí)現(xiàn).
你不必有2個(gè)不同的表來進(jìn)行聯(lián)結(jié).如果你想要將一個(gè)表的記錄與同一個(gè)表的其它記錄進(jìn)行比較,可以將一個(gè)表聯(lián)結(jié)到自身.例如,為了在你的寵物之中繁殖配偶,你可以用pet聯(lián)結(jié)自身來進(jìn)行相似種類的雄雌配對:
mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
-> FROM pet AS p1, pet AS p2
-> WHERE p1.species = p2.species AND p1.sex = ‘f' AND p2.sex = ‘m';
+――C+――+――C+――+―――+
| name| sex | name| sex | species |
+――C+――+――C+――+―――+
| Fluffy | f | Claws | m | cat|
| Buffy | f | Fang| m | dog|
| Buffy | f | Bowser | m | dog|
+――C+――+――C+――+―――+
在這個(gè)查詢中,我們?yōu)楸砻付▌e名以便能引用列并且使得每一個(gè)列引用與哪個(gè)表實(shí)例相關(guān)聯(lián)更直觀.
3.4. 獲得數(shù)據(jù)庫和表的信息如果你忘記數(shù)據(jù)庫或表的名字,或給定的表的結(jié)構(gòu)是什么(例如,它的列叫什么),怎么辦?MySQL通過提供數(shù)據(jù)庫及其支持的表的信息的幾個(gè)語句解決這個(gè)問題.
你已經(jīng)見到了SHOW DATABASES,它列出由服務(wù)器管理的數(shù)據(jù)庫.為了找出當(dāng)前選擇了哪個(gè)數(shù)據(jù)庫,使用DATABASE( )函數(shù):
mysql> SELECT DATABASE();
+――――+
| DATABASE() |
+――――+
| menagerie |
+――――+
如果你還沒選擇任何數(shù)據(jù)庫,結(jié)果是NULL.
為了找出當(dāng)前的數(shù)據(jù)庫包含什么表(例如,當(dāng)你不能確定一個(gè)表的名字),使用這個(gè)命令:
mysql> SHOW TABLES;
+―――――――+
| Tables in menagerie |
+―――――――+
| event|
| pet|
+―――――――+
如果你想要知道一個(gè)表的結(jié)構(gòu),可以使用DESCRIBE命令;它顯示表中每個(gè)列的信息:
mysql> DESCRIBE pet;
+―――+――――-+――+―C+―――+――-+
| Field| Type | Null | Key | Default | Extra |
+―――+――――-+――+―C+―――+――-+
| name | varchar(20) | YES || NULL ||
| owner| varchar(20) | YES || NULL ||
| species | varchar(20) | YES || NULL | |
| sex| char(1)| YES || NULL ||
| birth| date | YES || NULL ||
| death| date | YES || NULL ||
+―――+――――-+――+―C+―――+――-+
Field顯示列名字,Type是列的數(shù)據(jù)類型,Null表示列是否能包含NULL值,Key顯示列是否被索引而Default指定列的默認(rèn)值.
如果表有索引,SHOW INDEX FROM tbl_name生成有關(guān)索引的信息.
今天在做mysql的一個(gè)搜索的時(shí)候發(fā)現(xiàn)我用 select name from contact where name like ‘%a%'的時(shí)候出來的結(jié)果除了包含a的名字外連包含中文“新”的名字也出現(xiàn)在搜索結(jié)果里面,這令我想弄清楚mysql的匹配模式和規(guī)則到底是怎么樣的, 所以決定查查資料了解了解,另外在匹配的時(shí)候正則表達(dá)式也很常用!所以準(zhǔn)備在這里記錄我學(xué)習(xí)這兩個(gè)玩意的收獲!
出現(xiàn)這個(gè)問題的原因是:MySQL在查詢字符串時(shí)是大小寫不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,因此在比較過程中中文編碼字符大小寫轉(zhuǎn)換造成了這種現(xiàn)象.
解決辦法
1.在建表的時(shí)候?qū)τ诎形牡淖侄渭由稀癇INARY”屬性,使之進(jìn)行二進(jìn)制比較,例如講″name char(10)”改成”name char(10) BINARY”.但是這樣你對該表的該字段進(jìn)行匹配的時(shí)候是區(qū)分大小寫的.
2. 如果使用源碼編譯MySQL,可以在編譯的時(shí)候使用CwithCcharset=gbk參數(shù),這樣mysql就直接支持中文查找和排序.
3. 使用mysql的locate函數(shù)來判斷.如:
SELECT * FROM table WHERE locate(substr,str)>0 ;
locate()有兩個(gè)形式:LOCATE(substr,str), LOCATE(substr,str,pos).返回substr在str中的位置,如果str不包含substr返回0.這個(gè)函數(shù)也是不區(qū)分大小寫的.
4.這樣使用sql語句:SELECT * FROM TABLE WHERE FIELDS LIKE BINARY ‘%FIND%',但是這和1一樣是區(qū)分大小寫的如果你想進(jìn)行不區(qū)分大小寫的查詢的時(shí)候就要使用upper或者lower進(jìn)行轉(zhuǎn)換.
5.使用 binary和ucase函數(shù)及concat函數(shù).ucase是講英文全部轉(zhuǎn)換大寫,concat對字符串進(jìn)行連接.新的sql語句如下:
select id,title,name from achech_com.news where binary ucase(title) like concat('%',ucase('a'),'%')
也可以寫為select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%')
檢索的結(jié)果還算滿意吧,不過速度可能會(huì)因此而慢N毫秒喔. 因?yàn)槭褂胠ike和%進(jìn)行匹配的話對效率會(huì)有一定的影響.
正則表達(dá)式:
正則表達(dá)式是為復(fù)雜搜索指定模式的強(qiáng)大方式.
^
所匹配的字符串以后面的字符串開頭
mysql> select “fonfo” REGEXP “^fo$”; -> 0(表示不匹配)
mysql> select “fofo” REGEXP “^fo”; -> 1(表示匹配)
$
所匹配的字符串以前面的字符串結(jié)尾
mysql> select “fono” REGEXP “^fono$”; -> 1(表示匹配)
mysql> select “fono” REGEXP “^fo$”; -> 0(表示不匹配)
.
匹配任何字符(包括新行)
mysql> select “fofo” REGEXP “^f.*”; -> 1(表示匹配)
mysql> select “fonfo” REGEXP “^f.*”; -> 1(表示匹配)
a*
匹配任意多個(gè)a(包括空串)
mysql> select “Ban” REGEXP “^Ba*n”; -> 1(表示匹配)
mysql> select “Baaan” REGEXP “^Ba*n”; -> 1(表示匹配)
mysql> select “Bn” REGEXP “^Ba*n”; -> 1(表示匹配)
a+
匹配1個(gè)或多個(gè)a字符的任何序列.
mysql> select “Ban” REGEXP “^Ba+n”; -> 1(表示匹配)
mysql> select “Bn” REGEXP “^Ba+n”; -> 0(表示不匹配)
a?
匹配一個(gè)或零個(gè)a
mysql> select “Bn” REGEXP “^Ba?n”; -> 1(表示匹配)
mysql> select “Ban” REGEXP “^Ba?n”; -> 1(表示匹配)
mysql> select “Baan” REGEXP “^Ba?n”; -> 0(表示不匹配)
de|abc
匹配de或abc
mysql> select “pi” REGEXP “pi|apa”; -> 1(表示匹配)
mysql> select “axe” REGEXP “pi|apa”; -> 0(表示不匹配)
mysql> select “apa” REGEXP “pi|apa”; -> 1(表示匹配)
mysql> select “apa” REGEXP “^(pi|apa)$”; -> 1(表示匹配)
mysql> select “pi” REGEXP “^(pi|apa)$”; -> 1(表示匹配)
mysql> select “pix” REGEXP “^(pi|apa)$”; -> 0(表示不匹配)
(abc)*
匹配任意多個(gè)abc(包括空串)
mysql> select “pi” REGEXP “^(pi)*$”; -> 1(表示匹配)
mysql> select “pip” REGEXP “^(pi)*$”; -> 0(表示不匹配)
mysql> select “pipi” REGEXP “^(pi)*$”; -> 1(表示匹配)
{1} {2,3}
這是一個(gè)更全面的方法,它可以實(shí)現(xiàn)前面好幾種保留字的功能
a*
可以寫成a{0,}
a
可以寫成a{1,}
a?
可以寫成a{0,1}
在{}內(nèi)只有一個(gè)整型參數(shù)i,表示字符只能出現(xiàn)i次;在{}內(nèi)有一個(gè)整型參數(shù)i,
后面跟一個(gè)“,”,表示字符可以出現(xiàn)i次或i次以上;在{}內(nèi)只有一個(gè)整型參數(shù)i,
后面跟一個(gè)“,”,再跟一個(gè)整型參數(shù)j,表示字符只能出現(xiàn)i次以上,j次以下
(包括i次和j次).其中的整型參數(shù)必須大于等于0,小于等于 RE_DUP_MAX(默認(rèn)是25
5). 如果同時(shí)給定了m和n,m必須小于或等于n.
[a-dX], [^a-dX]
匹配任何是(或不是,如果使用^的話)a、b、c、d或X的字符.兩個(gè)其他字符之間的“-”字符構(gòu)成一個(gè)范圍,與從第1個(gè)字符開始到第2個(gè)字符之間的所有字符匹配.例如,[0-9]匹配任何十進(jìn)制數(shù)字 .要想包含文字字符“]”,它必須緊跟在開括號(hào)“[”之后.要想包含文字字符“-”,它必須首先或最后寫入.對于[]對內(nèi)未定義任何特殊含義的任何字符,僅與其本身匹配.
mysql> select “aXbc” REGEXP “[a-dXYZ]“; -> 1(表示匹配)
mysql> select “aXbc” REGEXP “^[a-dXYZ]$”; -> 0(表示不匹配)
mysql> select “aXbc” REGEXP “^[a-dXYZ] $”; -> 1(表示匹配)
mysql> select “aXbc” REGEXP “^[^a-dXYZ] $”; -> 0(表示不匹配)
mysql> select “gheis” REGEXP “^[^a-dXYZ] $”; -> 1(表示匹配)
mysql> select “gheisa” REGEXP “^[^a-dXYZ] $”; -> 0(表示不匹配)
[[.characters.]]
表示比較元素的順序.在括號(hào)內(nèi)的字符順序是唯一的.但是括號(hào)中可以包含通配符,
所以他能匹配更多的字符.舉例來說:正則表達(dá)式[[.ch.]]*c匹配chchcc的前五個(gè)字符
.
[=character_class=]
表示相等的類,可以代替類中其他相等的元素,包括它自己.例如,如果o和( )是
一個(gè)相等的類的成員,那么[[=o=]]、[[=( )=]]和[o( )]是完全等價(jià)的.
[:character_class:]
在括號(hào)里面,在[: 和:]中間是字符類的名字,可以代表屬于這個(gè)類的所有字符.
字符類的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、uppe
r、cntrl、print和 xdigit
mysql> select “justalnums” REGEXP “[[:alnum:]] “; -> 1(表示匹配)
mysql> select “!!” REGEXP “[[:alnum:]] “; -> 0(表示不匹配)
alnum 文字?jǐn)?shù)字字符
alpha 文字字符
blank 空白字符
cntrl 控制字符
digit 數(shù)字字符
graph 圖形字符
lower 小寫文字字符
print 圖形或空格字符
punct 標(biāo)點(diǎn)字符
space 空格、制表符、新行、和回車
upper 大寫文字字符
xdigit 十六進(jìn)制數(shù)字字符
[[:<:]]
[[:>:]]
分別匹配一個(gè)單詞開頭和結(jié)尾的空的字符串,這個(gè)單詞開頭和結(jié)尾都不是包含在alnum中
的字符也不能是下劃線.
mysql> select “a word a” REGEXP “[[:<:]]word[[:>:]]”; -> 1(表示匹配)
mysql> select “a xword a” REGEXP “[[:<:]]word[[:>:]]”; -> 0(表示不匹配)
mysql> select “weeknights” REGEXP “^(wee|week)(knights|nights)$”; -> 1(表示
匹配)
要想在正則表達(dá)式中使用特殊字符的文字實(shí)例,應(yīng)在其前面加上2個(gè)反斜杠“\”字符.MySQL解析程序負(fù)責(zé)解釋其中一個(gè),正則表達(dá)式庫負(fù)責(zé)解釋另一個(gè).例如,要想與包含特殊字符“+”的字符串“1+2” 匹配,在下面的正則表達(dá)式中,只有最后一個(gè)是正確的:
mysql> SELECT ‘1+2′ REGEXP ‘1+2′; -> 0
mysql> SELECT ‘1+2′ REGEXP ‘1\+2′; -> 0
mysql> SELECT ‘1+2′ REGEXP ‘1\\+2′; -> 1
《MYSQL教程mysql數(shù)據(jù)庫replace、regexp的用法》是否對您有啟發(fā),歡迎查看更多與《MYSQL教程mysql數(shù)據(jù)庫replace、regexp的用法》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/8097.html