Mysql——通配符和正則表達式的使用


1.like操作符和百分號通配符

%表示任何字符出現任意次數。


查詢出表TABLE中NAME字段中任意位置包含i的行:

select * from TABLE where NAME like '%i%'

查詢出表TABLE中NAME字段中開頭位置包含i的行:

select * from TABLE where NAME like 'i%'

查詢出表TABLE中NAME字段中結尾位置包含i的行

select * from TABLE where NAME like '%i'

注意:%不能匹配NULL;有一些字段首尾可能會出現空格,為了避免影響匹配結果,可以是同LTrim和RTrim函數去掉首尾的空格。

 

2.下划線通配符

下划線通配符只代表一個字符。

使用方法和%一樣,比如查詢出表TABLE中NAME為‘AAA’開頭的四個字母的行

select * from TABLE where NAME like 'AAA_'

 

3.正則表達式

除了使用like進行模糊匹配,還可以使用正則表達式進行模糊匹配。

正則表達式操作符:REGEXP

3.1基本字符匹配

查詢出表TABLE中,字段NAME以A結尾的且只有兩個字母的所有行:

select * from TABLE where NAME regexp '.A'

.是正則表達式的特殊字符,代表匹配任意一個字符。

 

3.2進行或(OR)匹配

查詢出表TABLE中,字段NAME為AAA或BBB的行:

select * from TABLE where NAME regexp 'AAA|BBB'

|為正則表達式的或操作符。

 

3.3匹配多個字符

查詢出表TABLE中,字段NAME以A或B或C開頭,且結尾為DD的行:

select * from TABLE where NAME regexp '[ABC]DD'

[ABC]定義一組字符,意思是:匹配A或B或C。

 

3.4范圍匹配

查詢出表TABLE中,字段NAME以1到9開頭,且結尾為A的行:

select * from TABLE where NAME regexp '[1-9]A'

[1-9]意為:匹配1到9任意數字,[a-z]意為匹配任意字符。

 

3.5匹配特殊字符

這種問題幾乎在每種語言中都會出現,即需要查詢的內容中包含特殊字符。這時候就需要轉義了。

在mysql中轉義符為\\

查詢出表TABLE中,NAME字段包含.的行:

select * from TABLE where NAME regexp '\\.'

 

3.6正則表達式常用元字符

 

注意:正則表達式匹配不區分大小寫,如果需要區分在regexp后面加上關鍵字:binary

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM