mysql數(shù)據(jù)庫replace、regexp的用法
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')
由MySQL提供的模式匹配的其它類型是使用擴(kuò)展正則表達(dá)式。當(dāng)你對(duì)這類模式進(jìn)行匹配測(cè)試時(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模式與被測(cè)試值的任何地方匹配,模式就匹配(這不同于LIKE模式匹配,只有與整個(gè)值匹配,模式才匹配)。
為了定位一個(gè)模式以便它必須匹配被測(cè)試值的開始或結(jié)尾,在模式開始處使用“^”或在模式的結(jié)尾用“$”。
為了說明擴(kuò)展正則表達(dá)式如何工作,下面使用REGEXP重寫上面所示的LIKE查詢:
為了找出以“b”開頭的名字,使用“^”匹配名字的開始:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^b';
+——–+——–+———+——+————+————+
| name| owner | species | sex | birth | death |
+——–+——–+———+——+————+————+
| Buffy | Harold | dog| f | 1989-05-13 | NULL|
| Bowser | Diane | dog| m | 1989-08-31 | 1995-07-29 |
+——–+——–+———+——+————+————+
如果你想強(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$';
+——–+——–+———+——+————+——-+
| name| owner | species | sex | birth | death |
+——–+——–+———+——+————+——-+
| Fluffy | Harold | cat| f | 1993-02-04 | NULL |
| Buffy | Harold | dog| f | 1989-05-13 | NULL |
+——–+——–+———+——+————+——-+
為了找出包含一個(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 ‘^…..$';
+——-+——–+———+——+————+——-+
| name | owner | species | sex | birth | death |
+——-+——–+———+——+————+——-+
| Claws | Gwen| cat| m | 1994-03-17 | NULL |
| Buffy | Harold | dog| f | 1989-05-13 | NULL |
+——-+——–+———+——+————+——-+
你也可以使用“{n}”“重復(fù)n次”操作符重寫前面的查詢:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^.{5}$';
+——-+——–+———+——+————+——-+
| name | owner | species | sex | birth | death |
+——-+——–+———+——+————+——-+
| Claws | Gwen| cat| m | 1994-03-17 | NULL |
| Buffy | Harold | dog| f | 1989-05-13 | NULL |
+——-+——–+———+——+————+——-+
附錄G:MySQL正則表達(dá)式 提供了關(guān)于正則表達(dá)式的句法的詳細(xì)信息。
3.3.4.8. 計(jì)數(shù)行數(shù)據(jù)庫經(jīng)常用于回答這個(gè)問題,“某個(gè)類型的數(shù)據(jù)在表中出現(xiàn)的頻度?”例如,你可能想要知道你有多少寵物,或每位主人有多少寵物,或你可能想要對(duì)你的動(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;
+——–+———-+
| owner | COUNT(*) |
+——–+———-+
| Benny | 2 |
| Diane | 2 |
| Gwen| 3 |
| Harold | 2 |
+——–+———-+
注意,使用GROUP BY對(duì)每個(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)只對(duì)狗和貓進(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è)描述事件的字段。
· 如果你想要對(duì)事件進(jìn)行分類,則需要一個(gè)事件類型字段。
綜合上述因素,event表的CREATE TABLE語句應(yīng)為:
mysql> CREATE TABLE event (name VARCHAR(20), date DATE,
-> type VARCHAR(15), remark VARCHAR(255));
對(duì)于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í)行對(duì)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';
+——–+——+—————————–+
| name| age | remark |
+——–+——+—————————–+
| Fluffy | 2 | 4 kittens, 3 female, 1 male |
| Buffy | 4 | 5 puppies, 2 female, 3 male |
| Buffy | 5 | 3 puppies, 3 female|
+——–+——+—————————–+
關(guān)于該查詢要注意的幾件事情:
FROM子句列出兩個(gè)表,因?yàn)椴樵冃枰獜膬蓚€(gè)表提取信息。
當(dāng)從多個(gè)表組合(聯(lián)結(jié))信息時(shí),你需要指定一個(gè)表中的記錄怎樣能匹配其它表的記錄。這很簡(jiǎn)單,因?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)行相似種類的雄雌配對(duì):
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';
+——–+——+——–+——+———+
| name| sex | name| sex | species |
+——–+——+——–+——+———+
| Fluffy | f | Claws | m | cat|
| Buffy | f | Fang| m | dog|
| Buffy | f | Bowser | m | dog|
+——–+——+——–+——+———+
在這個(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;
+———+————-+——+—–+———+——-+
| Field| Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| 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 ||
+———+————-+——+—–+———+——-+
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”。但是這樣你對(duì)該表的該字段進(jìn)行匹配的時(shí)候是區(qū)分大小寫的。
2. 如果使用源碼編譯MySQL,可以在編譯的時(shí)候使用–with–charset=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對(duì)字符串進(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)行匹配的話對(duì)效率會(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)“[”之后。要想包含文字字符“-”,它必須首先或最后寫入。對(duì)于[]對(duì)內(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
相關(guān)文章
MySQL事務(wù)與隔離級(jí)別的使用基礎(chǔ)理論
這篇文章主要介紹了MySQL事務(wù)的隔離級(jí)別詳情,事務(wù)隔離級(jí)別越高,為避免沖突所花費(fèi)的性能也就越多,即效率低。在“可重復(fù)讀”級(jí)別,實(shí)際上可以解決部分的虛讀問題,但是不能防止update更新產(chǎn)生的虛讀問題,要禁止虛讀產(chǎn)生,還是需要設(shè)置串行化隔離級(jí)別2023-02-02詳解mysql 使用left join添加where條件的問題分析
這篇文章主要介紹了詳解mysql 使用left join添加where條件的問題分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02一文搞懂Mysql中的共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場(chǎng)景
剛開始學(xué)習(xí)MySQL中鎖的時(shí)候,網(wǎng)上一查出來一堆,什么表鎖、行鎖、讀鎖、寫鎖、悲觀鎖、樂觀鎖等等等,直接整個(gè)人就懵了,下面這篇文章主要給大家介紹了關(guān)于Mysql中共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2022-07-07MySQL 按指定字段自定義列表排序的實(shí)現(xiàn)
下面小編就為大家?guī)硪黄狹ySQL 按指定字段自定義列表排序的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03mysql存儲(chǔ)過程 游標(biāo) 循環(huán)使用介紹
今天分享下自己對(duì)于Mysql存儲(chǔ)過程的認(rèn)識(shí)與了解,這里主要說說大家常用的游標(biāo)加循環(huán)的嵌套使用2012-11-11