婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Mysql中正則表達式Regexp常見用法

Mysql中正則表達式Regexp常見用法

熱門標簽:外呼系統電銷受騙 銷售語音電話機器人 走過哪個省地圖標注 萊西市地圖標注 安徽ai電話電銷機器人有效果嗎 巫師三血與酒地圖標注 在哪里申請400電話 常州網絡外呼系統開發 400電話申請信用卡

Mysql中Regexp常見用法

模糊匹配,包含特定字符串
# 查找content字段中包含“車友俱樂部”的記錄

select * from club_content where content regexp '車友俱樂部'

# 此時的regexp與like的以下用法是等同的

select * from club_content where content like '%車友俱樂部%'

模糊匹配,以特定字符串開頭
# 查找content字段中以“車友”開頭的記錄

select * from club_content where content regexp '^車友'

# 此時的regexp與like的以下用法是等同的

select * from club_content where content like '車友%'

模糊匹配,以特定字符串結尾
# 查找content字段中以“車友”結尾的記錄

select * from club_content where content regexp '車友$'

# 此時的regexp與like的以下用法是等同的

select * from club_content where content like '%車友'

模糊匹配,或關系
# 查找content字段中包含“心得”、“分享”或“技術貼”

select * from club_content where content REGEXP '心得|分享|技術貼'

模糊匹配,不包含單個字符
# 查找content字段中不包含“車”字、“友”字的記錄

select * from club_content where content REGEXP [^車友]

這個結果跑出來一看大吃一驚,竟然把所有記錄給跑出來,這是為什么呢?
因為一旦加了這個方括號"[]",它就把里面的內容拆成單個的字符再匹配,它會逐個字符去匹配判斷是不是等于“車”,或者是不是等于“友“,返回的結果是一組0、1的邏輯值。

如果想匹配不包含特定字符串,該怎么實現呢?

模糊匹配,不包含特定字符串
# 查找content字段不包含“車友”字符串的記錄

select * from club_content where content not REGEXP '車友'

MySql REGEXP運算符匹配字符串

1 ^ 匹配以該字符后面的字符開頭的字符串
舉個例子: REGEXP ‘^x' 表示匹配以x開頭的字符
2 $匹配以該字符前面的字符結尾的字符串
舉個例子: REGEXP ‘y$' 表示匹配以y結尾的字符
3 .匹配任意一個字符
4 […]匹配在方括號中的任意一個字符。
如: [1-9] 匹配1到9的數字, [abc]匹配其中任意一個
5 *匹配零個或多個在它前面的字符
如: x* 匹配任何數量的x字符

mysql 如何判斷 "字符串" 是否為 "數字"

這個問題有點怪 ,但很多時候我們會以字符串的形式存儲數字 , 反過來我們用字符串進行數學運算時, 好像也不會出錯 . 除非 , 用作數學運算的字符串不能轉換成數字 .
但是我們改如何判斷字符串是否能轉換成數字呢 ?

采用mysql的 REGEXP運算符 . 怎么用?

{String} REGEXP '[^0-9.]'

前面的字符串是我們要做判斷的, 后面的字符串是mysql的正則表達式,意思是 匹配不是數字或者小數點的字符。

如果String中含有不是0-9之間的數字或者是小數點時,返回true ,反之則返回false。

比如說 :

select ('123a' REGEXP '[^0-9.]'); --‘123a'中含有字符'a' 輸出結果為1 mysql中常量true輸出為1 false輸出為0

注意:如果字符串中有空格,也會匹配到正則表達式,返回1。如果是要去掉兩端的空格,就要將判斷的字符串,就要對字符串使用 trim()函數了。

這個只是REGEXP操作符的簡單應用,REGEXP的詳細應用請參考官方文檔。 

MySQL 正則表達式

在前面的章節我們已經了解到MySQL可以通過 LIKE ...% 來進行模糊匹配。

MySQL 同樣也支持其他正則表達式的匹配, MySQL中使用 REGEXP 操作符來進行正則表達式匹配。

如果您了解PHP或Perl,那么操作起來就非常簡單,因為MySQL的正則表達式匹配與這些腳本的類似。

下表中的正則模式可應用于 REGEXP 操作符中。

模式 描述
^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
. 匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。
[...] 字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...] 負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價于{0,}。
+ 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,m} m 和 n 均為非負整數,其中n = m。最少匹配 n 次且最多匹配 m 次。

實例

了解以上的正則需求后,我們就可以根據自己的需求來編寫帶有正則表達式的SQL語句。以下我們將列出幾個小實例(表名:person_tbl )來加深我們的理解:

查找name字段中以'st'為開頭的所有數據:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查找name字段中以'ok'為結尾的所有數據:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查找name字段中包含'mar'字符串的所有數據:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查找name字段中以元音字符開頭或以'ok'字符串結尾的所有數據:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

mysql正則REGEXP學習練習筆記

REGEXP在mysql是用來執行正則表達式的一個函數,像php中的preg之類的函數了,regexp正則函數如果只是簡單的查詢使用like即可,但復雜的還是需要使用regexp了,下面我們來看看。

MySql用戶手冊建議,在構造簡單查詢時,仍使用通配符。

如:

Select [*|fieldname list] From [tablename] where [fieldname] like ["%someletter"|"%someletter%","_","?someletter"];

但在一些特殊查詢中,不用正則表達式是不行的。MYSQL提供的正則表達式WHERE謂詞有三個,分別是:

REGEXP, RLIKE, NOT RLIKE

用這三個替換原有的LIKE謂詞,后面即可以跟正則表達式。
例如要查詢字段中含有“_”的數據,則要用以下查詢語句:

SELECT * FROM TABLENAME WHERE FIELDNAME RLIKE '.[_].';

擴展正則表達式的一些字符是:

· ‘.'匹配任何單個的字符。
· 字符類“[...]”匹配在方括號內的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字符的范圍,使用一個“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何數字。
· “ * ”匹配零個或多個在它前面的字符。例如,“x*”匹配任何數量的“x”字符,“[0-9]*”匹配任何數量的數字,而“.*”匹配任何數量的任何字符。
如果REGEXP模式與被測試值的任何地方匹配,模式就匹配(這不同于LIKE模式匹配,只有與整個值匹配,模式才匹配)。
為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。
為了找出以“b”開頭的名字,使用“^”匹配名字的開始:
使用正則

SELECT * FROM pet WHERE name REGEXP BINARY ‘^b';
SELECT * FROM pet WHERE name REGEXP ‘fy$';
SELECT * FROM pet WHERE name REGEXP ‘w';
SELECT * FROM pet WHERE name REGEXP ‘^…..$';
SELECT * FROM pet WHERE name REGEXP ‘^.{5}$';

今天在應用中遇到了這樣的一個問題,

有一個字段 t1,其中的值類似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2
需要從里面搜索出比如說:第一個逗號前的數字范圍為3-5之間,第三個逗號前的數字的范圍為3-5之間,第10個逗號前的數字范圍為3-5之間,其余的都為1-5之間。。。
則sql語句可以這么寫:

SELECT * FROM tb WHERE t1 REGEXP '^[3-5],[1-5],[3-5],[1-5],[1-5],[1-5],[1-5],[1-5],[1-5],[3-5],[1-5],[1-5],[1-5],[1-5],[1-5],[1-5]%';

1. 使用LIKE和NOT LIKE比較操作符(注意不能使用=或!=);
2. 模式默認是忽略大小寫的;
3. 允許使用”_”匹配任何單個字符,”%”匹配任意數目字符(包括零字符);

附一些mysql正則規則

^ 匹配字符串的開始部分
$ 匹配字符串的結束部分
. 匹配任何字符(包括回車和新行)
a* 匹配0或多個a字符的任何序列
a+ 匹配1個或多個a字符的任何序列
a? 匹配0個或1個a字符
de|abc 匹配序列de或abc
(abc)* 匹配序列adc的0個或者多個實例

{n}、{m,n} {n}或{m,n}符號提供了編寫正則表達式的更通用方式,能夠匹配模式的很多前述原子(或“部分”)。m和n均為整數。
a* 可被寫為a{0,}
a+ 可被寫為a{1,}
a? 可被寫為a{0,1}

[a-dX] 匹配任何是a,b,c,d或者X的字符,兩個其他字符之間的'-'字符構成一個范圍
[^a-dX] 匹配任何不是a,b,c,d或者X的字符,前面的字符'^'是否定的意思

[.characters.] 在括號表達式中(使用[和]),匹配用于校對元素的字符序列,字符為單個字符或新行等字符名
mysql> SELECT ‘~' REGEXP ‘[[.~.]]'; -> 1
mysql> SELECT ‘~' REGEXP ‘[[.tilde.]]'; -> 1

[=character_class=]
在括號表達式中(使用[和]),[=character_class=]表示等同類。它與具有相同校對值的所有字符匹配,包括它本身,
[[=a=]] 等同于[a(+)],[a+],[a{1,}]

[:character_class:]
在括號表達式中(使用[和]),[:character_class:]表示與術語類的所有字符匹配的字符類。

標準的類名稱是:

alnum 文字數字字符
alpha 文字字符
blank 空白字符
cntrl 控制字符
digit 數字字符
graph 圖形字符
lower 小寫文字字符
print 圖形或空格字符
punct 標點字符
space 空格、制表符、新行、和回車
upper 大寫文字字符
xdigit 十六進制數字字符

[[::]], [[:>:]]

這些標記表示word邊界。它們分別與word的開始和結束匹配。word是一系列字字符,其前面和后面均沒有字字符。字符是alnum類中的字母數字字符或下劃線(_)。

mysql> select ‘fang shan zi' regexp ‘[[::]]shan[[:>:]]'; -> 1
mysql> select ‘fang shan zi' regexp ‘[[::]]fang[[:>:]]'; -> 1
mysql> select ‘fang shans zi' regexp ‘[[::]]shan[[:>:]]'; -> 0

正則表達式使用特殊字符,應在其前面加上2個反斜杠''字符

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 查尋條件使用正則 regexp

我用的是 Mybatis

t.hobby : 條件字段
hobby : 查尋參數,值可以是多個逗號分隔的值:‘閱讀,交友,圍棋'

!-- t.hobby 的值最初可能是這樣: '    吃,  喝,嫖,賭  , 抽,坑,蒙,拐,騙,偷 ' 每個詞的兩邊有空格不規則 -->
!-- 下面逐步演示 -->
if test="hobby!=null and hobby!=''">
 concat(',',REPLACE (t.hobby, ' ', ''),',') regexp concat(',(',replace(#{hobby},',','|'),'),')
/if>
!-- 表字段 t.hobby 取出值 -->
if test="hobby!=null and hobby!=''">
 concat(',',REPLACE ('    吃,  喝,嫖,賭  , 抽,坑,蒙,拐,騙,偷 ', ' ', ''),',') regexp concat(',(',replace(#{hobby},',','|'),'),')
/if>
!-- 表字段值處理后,去掉了多余的空格 -->
if test="hobby!=null and hobby!=''">
 concat(',','吃,喝,嫖,賭,抽,坑,蒙,拐,騙,偷',',') regexp concat(',(',replace(#{hobby},',','|'),'),')
/if>
!-- concat后得到一個字符串,首尾加上了逗號 -->
if test="hobby!=null and hobby!=''">
 ',吃,喝,嫖,賭,抽,坑,蒙,拐,騙,偷,' regexp concat(',(',replace(#{hobby},',','|'),'),')
/if>
!-- 取出參數 #{hobby} 的值 -->
if test="hobby!=null and hobby!=''">
 ',吃,喝,嫖,賭,抽,坑,蒙,拐,騙,偷,' regexp concat(',(',replace('吃,喝,嫖,嫖',',','|'),'),')
/if>
!-- 把逗號換成 |  -->
if test="hobby!=null and hobby!=''">
 ',吃,喝,嫖,賭,抽,坑,蒙,拐,騙,偷,' regexp concat(',(','吃|喝|嫖|嫖','),')
/if>
!-- concat后得到一個字符串,首尾加上了括號,逗號  -->
if test="hobby!=null and hobby!=''">
 ',吃,喝,嫖,賭,抽,坑,蒙,拐,騙,偷,' regexp ',(吃|喝|嫖|嫖),' !-- 紀念于謙老師不賭的美德 -->
/if>

得到結果是 1 作為條件就是真了。

復雜的過程主要是用來處理查尋條件。得到符合要求的正則作條件就ok了
但個人覺得,更理想的方式是:
被查尋字段在當初存入數據時就處理好格式:'吃,喝,嫖,賭,抽,坑,蒙,拐,騙,偷'
查尋條件可以處理好傳進來:',(吃|喝|嫖|嫖),'
那么一個查尋就可以簡化成這樣

if test="hobby!=null and hobby!=''">
 concat(',', t.hobby ,',') regexp #{hobby}
/if>

到這就差不多了,基本上就可以看得懂了,實在不行就參考下面的相關文章。

您可能感興趣的文章:
  • 正則表達式(RegExp)判斷文本框中是否包含特殊符號
  • MySQL中使用replace、regexp進行正則表達式替換的用法分析
  • MySQL中REGEXP正則表達式使用大全
  • oracle正則表達式regexp_like的用法詳解
  • js正則表達式講解之index屬性(RegExp對象)
  • js正則表達式之RegExp對象屬性lastIndex,lastMatch,lastParen,lastContext,rightContext屬性講解
  • ES9的新特性之正則表達式RegExp詳解

標簽:煙臺 果洛 黃石 來賓 鞍山 赤峰 陽江 河北

巨人網絡通訊聲明:本文標題《Mysql中正則表達式Regexp常見用法》,本文關鍵詞  Mysql,中,正則,表達式,Regexp,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql中正則表達式Regexp常見用法》相關的同類信息!
  • 本頁收集關于Mysql中正則表達式Regexp常見用法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美视频一区二区三区在线观看 | 日本免费新一区视频| 国产乱码精品一区二区三| 欧美色男人天堂| 最近日韩中文字幕| 国产成人免费在线观看| 精品国产污污免费网站入口 | 一二三区精品视频| 欧美亚洲综合久久| 一区二区视频在线| 色噜噜狠狠成人网p站| 日韩理论片在线| 欧美午夜片在线看| 婷婷六月综合网| 欧美va天堂va视频va在线| 久久精品国产99久久6| 日韩三级精品电影久久久| 黑人巨大精品欧美一区| 欧美国产成人在线| 99久久国产综合色|国产精品| 国产精品毛片久久久久久久| 91麻豆国产福利精品| 亚洲一区二区av电影| 日韩欧美在线不卡| 成人在线视频首页| 亚洲国产精品一区二区www| 日韩欧美第一区| av成人老司机| 亚洲国产综合91精品麻豆| 欧美一区二区视频免费观看| 国产69精品久久777的优势| 亚洲欧美一区二区不卡| 欧美一区二区日韩一区二区| 懂色av一区二区在线播放| 亚洲精品国产精品乱码不99 | 免费视频一区二区| 国产精品毛片大码女人| 欧美日韩激情一区| 午夜精品久久久久久久| 欧美国产日韩a欧美在线观看 | 亚洲天堂福利av| 日韩精品一区二区三区在线| 99视频精品在线| 蜜桃精品视频在线| 亚洲免费在线视频一区 二区| 欧美精品免费视频| 国产宾馆实践打屁股91| 亚洲主播在线播放| 国产精品乱码一区二三区小蝌蚪| 制服丝袜激情欧洲亚洲| 91同城在线观看| 国产福利91精品一区二区三区| 亚洲香肠在线观看| 国产精品入口麻豆原神| 亚洲精品在线三区| 7777精品伊人久久久大香线蕉 | 国产高清亚洲一区| 亚洲精品一二三| 国产日韩精品一区二区三区在线| 欧美欧美午夜aⅴ在线观看| 成人久久久精品乱码一区二区三区| 亚洲成人免费在线| 一区二区三区资源| 一区二区三区日韩在线观看| 国产精品卡一卡二| 国产精品美女久久久久aⅴ| 精品免费国产二区三区| 欧美精品一卡二卡| 精品视频在线免费观看| 欧美亚洲日本国产| 久久综合色婷婷| 精品日韩欧美在线| 精品国产免费一区二区三区四区| 91精品国产综合久久香蕉麻豆 | 精品视频在线免费观看| 蜜臀av性久久久久蜜臀av麻豆| 亚洲高清一区二区三区| 五月天激情小说综合| 偷偷要91色婷婷| 国产精品理伦片| 亚洲天堂精品在线观看| 依依成人综合视频| 亚洲一区二区在线播放相泽| 亚洲成a人v欧美综合天堂下载| 天天爽夜夜爽夜夜爽精品视频| 亚洲18色成人| 免费在线观看视频一区| 久久精品国产精品亚洲红杏| 国产一区二区在线电影| 国产成a人亚洲| 91丝袜美腿高跟国产极品老师| 在线视频一区二区三| 欧美日高清视频| 精品少妇一区二区三区免费观看| 日韩一区二区三区视频| 久久久综合九色合综国产精品| 国产精品丝袜久久久久久app| 国产精品久久久久久户外露出| 一区二区国产视频| 亚洲国产精品久久艾草纯爱| 精品一区二区三区在线播放视频| 91蜜桃在线免费视频| 日韩精品专区在线影院重磅| 国产精品久久一卡二卡| 青椒成人免费视频| 色呦呦网站一区| 国产人成亚洲第一网站在线播放| 亚洲综合色噜噜狠狠| 国产伦精品一区二区三区免费 | 一区视频在线播放| 天天综合色天天综合| 成人av在线播放网站| 精品对白一区国产伦| 性做久久久久久免费观看欧美| k8久久久一区二区三区 | 成人av先锋影音| 欧美高清你懂得| 国产精品久久久久久久久搜平片 | 一个色综合网站| 欧美中文字幕一区二区三区| 亚洲精品在线观看网站| 欧美一区二区三区色| 成人一区二区在线观看| 精品国产一区二区三区四区四| 欧美一区二区日韩一区二区| 日韩欧美一区二区免费| 欧美精品一区二区久久久| 樱花草国产18久久久久| 91亚洲精品久久久蜜桃网站| 在线亚洲一区二区| 欧美日韩精品一区二区三区四区| 欧美日韩免费在线视频| 日韩三级.com| 精品一区二区久久久| 国产伦精品一区二区三区免费| 高潮精品一区videoshd| 色综合中文字幕| 欧美一级免费观看| 美女久久久精品| 国产成人免费av在线| 日本久久一区二区| 日韩一区二区三区观看| 欧美激情一区二区三区全黄| 成人爽a毛片一区二区免费| 色综合一区二区三区| 欧美日韩精品久久久| 欧美tickling挠脚心丨vk| 欧美激情一区二区三区| 99久久久久免费精品国产| 欧美精品三级在线观看| 国产欧美精品一区二区色综合朱莉| 亚洲黄色尤物视频| 日韩国产精品91| 久久精品一区二区三区av| 亚洲人成7777| 国产另类ts人妖一区二区| 欧美视频一区二| 欧美国产综合色视频| 欧美色国产精品| 欧美国产激情一区二区三区蜜月| 天天综合天天做天天综合| 成人高清免费观看| 91麻豆精品国产综合久久久久久| 精品夜夜嗨av一区二区三区| 在线免费观看日本一区| 亚洲国产高清不卡| 久久精品免费看| 色94色欧美sute亚洲13| 免费在线看一区| 欧美日韩一区久久| 91麻豆123| 国产精品国产a级| 高清beeg欧美| 欧美—级在线免费片| 精品在线观看免费| 欧美丰满高潮xxxx喷水动漫| 亚洲色图在线播放| 亚洲男人的天堂av| 久久蜜桃香蕉精品一区二区三区| 欧美不卡123| 日韩av在线发布| 制服丝袜国产精品| 天天操天天干天天综合网| 国产精品久久影院| 日韩午夜激情视频| 日韩激情一二三区| 欧美片网站yy| 五月激情六月综合| 亚洲欧美中日韩| 91亚洲精品久久久蜜桃网站| 亚洲欧美在线另类| 色悠悠亚洲一区二区| www.欧美.com| 亚洲欧美成aⅴ人在线观看| 99久久精品国产精品久久| 国产精品久久777777| 国产视频一区二区在线| 国产乱理伦片在线观看夜一区| 久久这里只有精品首页| 国产成人一级电影|