Mysql數據庫正則表達式

1.基本字符的匹配

SELECT * FROM a1 WHERE name regexp '1000'  #匹配名稱含有1000的所有行
SELECT * FROM a1 WHERE name regexp '.000'  #匹配以000結尾的所有行,(.正則中表示:匹配任意一個字符)

從中可以看到正則表達式能夠模擬LIKE使用通配符,注意:在通配符能完成的時候就不用正則,因為正則可能慢點,當然正則也能簡化通配符,完成更大的作用。所以要有所取舍。

LIKEREGEXP的區別:

 SELECT * FROM a1 WHERE name LIKE 'a'SELECT * FROM a1 WHERE name regexp 'a' 

下面兩條語句第一條不返回數據,第二條返回數據。
原因如下:

LIKE匹配整個列值時,不會找到它,相應的行也不會被返回(除非使用通配符)
REGEXP匹配時,會自動查找并返回結果。
那么REGEXP也能匹配整個列值,使用^$定位符即可!

匹配不區分大小寫

Mysql正則大小寫都會匹配,為區分大小寫可使用binary關鍵字,如:

SELECT * FROM a1 WHERE name LIKE binary '%J%'   #使用LIKE+通配符匹配大寫J
SELECT * FROM a1 WHERE name regexp binary 'j'   #使用正則匹配小寫j

2.進行OR匹配

|為正則表達式的OR操作符,表示匹配其中之一

SELECT * FROM a1 WHERE name regexp binary 'a|j|G' 

3.匹配特定字符

使用[]括起來的字符,將會匹配其中任意單個字符。

SELECT * FROM a1 WHERE name regexp '[12]st'

以上'[12]st'正則表達式,[12]定義一組字符,它的意思是匹配1或2,因此結果如下:

正如所見,[]是另一種OR語句,[123]st可以是[1|2|3]st的縮寫,也可以使用后者,注意:1|2|3 st這樣不推薦,因為mysql會假定你的意思是匹配'1'或'2'或'3st'除非你把字符|括在一個集合中,如:[1|2|3]st
字符也可以否定,加^則意味著除此之外,如[^123]st意思是匹配除了1st、2st、3st之外的數據。

4.匹配范圍

正則表達式可以使用-匹配一個范圍,如[0-9]匹配任意數字,無論是1還是11還是10111,[a-z]匹配任意小寫字母。

5.匹配特殊字符
如上,./-/[]等是正則表達式的特殊字符,如果要匹配含有這些字符的數據,就需要使用轉義(escaping),\\。如\\.表示查找'.'。\\也用來引用元字符(具有特殊含義的字符),如:
\\f:表示換頁
\\n:表示換行
\\r:表示回車
\\t:表示制表
\\v:表示縱向制表
Notes:

如果匹配反斜杠本身()則需要使用\\\
為什么Mysql使用兩個反斜杠(\),而很多語言使用一個反斜杠轉義呢,因為mysql自己解釋一個,正則表達式庫解釋一個。

6.匹配字符串


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273414.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273414.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android項目 之 記事本(6)----- 加入手寫

想必大家都用過QQ的白板功能,里面主要有兩項,一個是涂鴉功能,事實上類似于上節的畫板功能,而還有一個就是手寫,那記事本怎么能沒有這個功能呢,今天就來為我們的記事本加入手寫功能。 先上圖,看看…

HTTP協議中常見請求方法以及一些常見錯誤代碼

GET: 請求指定的頁面信息,并返回實體主體。 HEAD: 只請求頁面的首部。 POST: 請求服務器接受所指定的文檔作為對所標識的URI的新的從屬實體。 PUT: 從客戶端向服務器傳送的數據取代指定的文檔的內容。 DELETE&#xff…

license文件生成原理

byte解密weblogic加密oraclehex現在很多J2EE應用都采用一個license文件來授權系統的使用,特別是在系統購買的早期,會提供有限制的license文件對系統進行限制,比如試用版有譬如IP、日期、最大用戶數量的限制等。 而license控制的方法又有很…

linux常用關機命令及其區別-Shutdown halt reboot init

1.shutdown shutdown命令安全地將系統關機。 shutdown 參數說明: [-t] 在改變到其它runlevel之前﹐告訴init多久以后關機。 [-r] 重啟計算器。 [-k] 并不真正關機﹐只是送警告信號給每位登錄者〔login〕。 [-h] 關機后關閉電源〔halt〕。 [-n] 不用init﹐而是自己來關機。不鼓…

CSS3動畫@keyframes中translate和scale混用出錯問題

在寫基于網頁的2048時,想讓一個元素出現時已經通過translate屬性固定在指定位置,同時顯示動畫scale(0)-->scale(1),以實現放大出現效果。 CSS代碼為 -webkit-keyframes mymove_failed{0% {-webkit-transform:translate(50px,50px) scale…

metero學習

博客園首頁新隨筆聯系訂閱管理最新隨筆 最新評論 node.js相關的中文文檔及教程 (轉) Posted on 2013-08-30 10:40 小小清清 閱讀(61) 評論(0) 編輯 收藏 node.js api中英文對照: http://docs.cnodejs.net/cman/ node.js入門中文版: http://nodebeginner.org/index-zh-cn.html e…

Linux統計單個文件統計

語法:wc [選項] 文件… 說明:該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名,則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符串。 該命令各選項含義如下: - c 統計字節數…

jQuery慢慢啃之事件對象(十一)

1.event.currentTarget//在事件冒泡階段中的當前DOM元素 $("p").click(function(event) {alert( event.currentTarget this ); // true }); 2.event.data//當前執行的處理器被綁定的時候,包含可選的數據傳遞給jQuery.fn.bind。 $("a").ea…

Linuxcurl命令參數詳解

Linuxcurl是通過url語法在命令行下上傳或下載文件的工具軟件,它支持http,https,ftp,ftps,telnet等多種協議,常被用來抓取網頁和監控Web服務器狀態。1.linuxcurl抓取網頁:抓取百度:curlhttp://www.baidu.com如發現亂碼,…

android解析XML總結(SAX、Pull、Dom三種方式)

在android開發中&#xff0c;經常用到去解析xml文件&#xff0c;常見的解析xml的方式有一下三種&#xff1a;SAX、Pull、Dom解析方式。 今天解析的xml示例&#xff08;channels.xml&#xff09;如下&#xff1a; 1 <?xml version"1.0" encoding"utf-8"…

查看Eclipse中的jar包的源代碼:jd-gui.exe

前面搞了很久的使用JAD&#xff0c;各種下載插件&#xff0c;最后配置好了&#xff0c;還是不能用&#xff0c;不知道怎么回事&#xff0c; 想起一起用過的jd-gui.exe這個工具&#xff0c;是各種強大啊&#xff01;&#xff01;&#xff01; 只需要把jar包直接扔進去就可以了&a…

maven scope含義的說明

compile &#xff08;編譯范圍&#xff09; compile是默認的范圍&#xff1b;如果沒有提供一個范圍&#xff0c;那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath 中可用&#xff0c;同時它們也會被打包。 provided &#xff08;已提供范圍&#xff09; provided 依…

此地址使用了一個通常用于網絡瀏覽以外的端口。出于安全原因,Firefox 取消了該請求...

FirFox打開80以外的端口&#xff0c;會彈出以下提示&#xff1a; “此地址使用了一個通常用于網絡瀏覽以外的端口。出于安全原因&#xff0c;Firefox 取消了該請求。”。 解決方法如下&#xff1a; 在Firefox地址欄輸入about:config,然后在右鍵新建一個字符串鍵network.securit…

Java操作shell腳本

public class Exec {private static ILogger logger LoggerFactory.getLogger(Exec.class);public Exec() {super();}/*** 執行命令&#xff08;如Shell腳本&#xff09;<br>* * param cmd 操作命令* param timeout 超時時間* return 命令執行過程輸出內容* * throws IO…

Mysql更新插入

在向表中插入數據的時候&#xff0c;經常遇到這樣的情況&#xff1a;1. 首先判斷數據是否存在&#xff1b; 2. 如果不存在&#xff0c;則插入&#xff1b;3.如果存在&#xff0c;則更新。 在 SQL Server 中可以這樣處理&#xff1a; if not exists (select 1 from t where id …

信息加密之信息摘要加密MD2、MD4、MD5

對于用戶數據的保密一直是各個互聯網企業頭疼的事&#xff0c;那如何防止用戶的個人信息泄露呢&#xff1f;今天為大家介紹一種最簡單的加密方式--信息摘要算法MD。它如何來保護用戶的個人信息呢&#xff1f;其實很簡單&#xff0c;當獲得到用戶的信息后&#xff0c;先對其進行…

Java 從網絡上下載文件

/*** 下載文件到本地 */public static void downloadPicture(String imageUrl, String filename){ URL url;try {url new URL(imageUrl);//打開網絡輸入流DataInputStream dis new DataInputStream(url.openStream());//建立一個新的文件FileOutputStream fos new FileOutp…

An error was encountered while running(Domain=LaunchSerivcesError, Code=0)

今天突然遇到這樣一個錯誤&#xff0c;編譯可以通過&#xff0c;但是運行就會彈出這個錯誤提示&#xff1a; An error was encountered while running(DomainLaunchSerivcesError, Code0) 解決辦法就是重置模擬器。 點擊模擬器菜單中的Reset Contents and Settings&#xff0c;…

hdu 4091 線性規劃

分析轉自&#xff1a;http://blog.csdn.net/dongdongzhang_/article/details/7955136 題意 &#xff1a; 背包能裝體積為N, 有兩種寶石&#xff0c; 數量無限&#xff0c; 不能切割。 分別為 size1 value 1 size2 value2 問背包能裝最大的價值&#xff1f; 思路 &#xff…

linux fmt命令

簡單的格式化文本 fmt [option] [file-list] fmt通過將所有非空白行的長度設置為幾乎相同&#xff0c;來進行簡單的文本格式化 參數 fmt從file-list中讀取文件&#xff0c;并將其內容的格式化版本發送到標準輸出。如果不制定文件名或者用連字符&#xff08;-&#xff09;來替代…