以前我要查找資料都是使用like後來發現mysql中也有正規表示式了並且感覺性能要好於like,下面我來給大家分享一下mysql REGEXP正則表達式使用詳解,希望此方法對大家有幫助。
正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello符合hello。
非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串相符。例如,正規表示式hello|word符合字串hello或字串word。
作為一個更為複雜的範例,正規表示式B[an]*s符合下述字串中的任何一個:Bananas,Baaaaas,Bs,以及以B開始、以s結束、並在其中包含任意數目a或n字元的任何其他字串。
以下是可用來隨REGEXP運算子的資料表的模式。
應用程式範例,尋找用戶表中Email格式錯誤的使用者記錄:
SELECT * FROM users WHERE email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$'
MySQL資料庫中正規表達式的語法,主要包括各種符號的意思。
(^)字元
符合字串的開始位置,如「^a」表示以字母a開頭的字串。
mysql> select 'xxxyyy' regexp '^xx'; +-----------------------+ | 'xxxyyy' regexp '^xx' | +-----------------------+ | 1 | +-----------------------+ 1 row in set (0.00 sec)
查詢xxxyyy字串中是否以xx開頭,結果值為1,表示值為true,滿足條件。
($)字元
符合字串的結束位置,如「X^」表示以字母X結尾的字串。
(.)字符
這個字符就是英文下的點,它匹配任何一個字符,包括回車、換行等。
(*)字符
星號匹配0個或多個字符,在它之前必須有內容。如:
mysql> select 'xxxyyy' regexp 'x*';
這個SQL語句,正規符合為true。
(+)字元
加號符合1個或多個字符,在它之前也必須有內容。加號跟星號的用法類似,只是星號允許出現0次,加號則必須至少出現一次。
(?)字元
問號符合0次或1次。
實例:
現在根據上面的表,可以裝置各種不同類型的SQL查詢以滿足要求。在這裡列出一些理解。考慮我們有一個表為person_tbl和有一個字段名為名稱:
#查詢找到所有的名字以'st'開頭
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
查詢找到所有的名字以'ok'結尾
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
查詢找到所有的名字包函'mar'的字串
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
查詢找到所有名稱以元音開始和'ok'結束的
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
一個正規表示式中的可以使用以下保留字
^
所符合的字串以後面的字串開頭
mysql> select "fonfo" REGEXP "^fo$"; -> 0(表示不匹配) mysql> select "fofo" REGEXP "^fo"; -> 1(表示匹配)
##$
所匹配的字串以前面的字串結尾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*
符合任意多個a(包括空白字串)mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配) mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配) mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配)
a+
符合任意多個a(不包括空白字串)mysql> select "Ban" REGEXP "^Ba+n"; -> 1(表示匹配) mysql> select "Bn" REGEXP "^Ba+n"; -> 0(表示不匹配)
a?
#符合一個或零個amysql> 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(包括空白字串)
mysql> select "pi" REGEXP "^(pi)*$"; -> 1(表示匹配) mysql> select "pip" REGEXP "^(pi)*$"; -> 0(表示不匹配) mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(表示匹配)
{1}
{2,3}這是一個更全面的方法,它可以實現前面好幾個保留字的功能
a *可以寫成a{0,}
a+
#可以寫成a{1,}
##a?
可以寫成a{0,1} 在{}內只有一個整數參數i,表示字元只能出現i次;在{}內有一個整數參數i,後面跟一個“, ”,表示字元可以出現i次或i次以上;在{}內只有一個整數參數i,後面跟一個“,”,再跟一個整數參數j,表示字元只能出現i次以上,j次以下(包括i次和j次)。其中的整型參數必須大於等於0,小於等於 RE_DUP_MAX(預設是255)。 如果有兩個參數,第二個必須大於等於第一個
###[^a-dX]######符合除「a」、「b」、「c」、「d」、「X」以外的任何字元。 ######「[」、「]」必須成對使用###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(表示不匹配)###相關推薦:############JS正規表示式完美實現身分證校驗功能############怎麼用正規表示式讓JavaScript的程式碼高亮########
以上是關於MySQL中REGEXP正規表示式使用小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

在mysql中,是否需要commit取决于存储引擎:1、若是不支持事务的存储引擎,如myisam,则不需要使用commit;2、若是支持事务的存储引擎,如innodb,则需要知道事务是否自动提交,因此需要使用commit。

“mysql-connector”是mysql官方提供的驱动器,可以用于连接使用mysql;可利用“pip install mysql-connector”命令进行安装,利用“import mysql.connector”测试是否安装成功。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)