MySQL標準和擴充套件的SQL匹配模式

2022-03-22 12:01:23 字數 2170 閱讀 4653

sql標準模式匹配:

在sql標準模式匹配中,使用「_」匹配任何單個字元,而「%」匹配任意數目字元(包括零字元)。注意使用sql匹配模式時,不能使用=或!=;而應使用like或not like比較操作符。

找出以「b」開頭的名字:

mysql> 

select

* from

goods 

where

goodsname 

like

'b%'

; 找出以「fy」結尾的名字:

mysql> 

select

* from

goods 

where

goodsname 

like

'%fy'

; 找出包含「w」的名字:

mysql> 

select

* from

goods 

where

goodsname 

like

'%w%'

; 找出正好包含5個字元的名字,使用「_」模式字元:

mysql> 

select

* from

goods 

where

goodsname 

like

'_____'

;sql擴充套件模式匹配:

mysql的另乙個匹配模式是使用擴充套件正規表示式。它們使用regexp和not regexp操作符(或rlike和not rlike,同義詞)。

擴充套件正規表示式的一些字元是:

1.『.』匹配任何單個的字元。

2.字元類「[...]」匹配在方括號內的任何字元。例如,「[abc]」匹配「a」、「b」或「c」。為了命名字元的範圍,使用乙個「-」。「[a-z]」匹配任何字母,而「[0-9]」匹配任何數字。

3.「 * 」匹配零個或多個在它前面的字元。例如,「x*」匹配任何數量的「x」字元,「[0-9]*」匹配任何數量的數字,而「.*」匹配任何數量的任何字元。

注意:(1) regexp模式匹配中,在值的區域性任何地方發現匹配,則表示成功匹配;這一點不同於like模式,只有與整個值匹配,才表示成功匹配。

(2)當要求被匹配值的開始與結尾進行完整匹配時,在表示式開始處使用「^」和在結尾用「$」。

就上面標準sql模式匹配的幾個案例,下面用擴充套件表示式的方式重寫:

為了找出以「b」開頭的名字,使用「^」匹配名字的開始:

mysql> 

select

* from

goods 

where

goodsname regexp 

'^b'

; 如果你想強制使regexp比較區分大小寫,使用binary關鍵字使其中乙個字串變為二進位制字串。該查詢只匹配名稱首字母的小寫『b』。

mysql> 

select

* from

goods 

where

goodsname regexp 

binary

'^b'

; 為了找出以「fy」結尾的名字,使用「$」匹配名字的結尾:

mysql> 

select

* from

goods 

where

goodsname regexp 

'fy$'

; 為了找出包含乙個「w」的名字,使用以下查詢:

mysql> 

select

* from

goods 

where

goodsname regexp 

'w'; 

為了找出包含正好5個字元的名字,使用「^」和「$」匹配名字的開始和結尾,和5個「.」例項在兩者之間:

mysql> 

select

* from

pet 

where

name

regexp 

'^.....$'

; 也可以使用「」「重複n次」操作符重寫前面的查詢:

mysql> 

select

* from

pet 

where

name

regexp 

'^.$'

MySQL對標準SQL的注釋擴充套件

之前一直不明白 mysql 注釋中的嘆號是什麼東西,直到看了下邊的 manual 文件中的內容。mysql 伺服器包含一些其他 sql dbms 中不具備的擴充套件。注意,如果使用了它們,將無法把 移植到其他 sql伺服器。在某些情況下,你可以編寫包含 mysql 擴充套件的 但仍保持其可移植性,方...

1 7 1 MySQL對標準SQL的擴充套件

mysql server支援某些您可能在其他sql dbms中找不到的擴充套件。請注意,如果使用它們,您的 將無法移植到其他sql server。在某些情況下,可以使用以下形式的注釋編寫包含mysql擴充套件但仍可移植的 在這種情況下,mysql伺服器將像其他任何sql語句一樣解析並執行注釋中的 但...

mysql 標準sql 久違的SQL標準

很久沒有什麼工作需要參考sql標準了,乃至於sql 2011的更新都一直沒有去關注過。sql標準一路走來,可以說是略顯老態了,參與的廠商比較少,關注的人也少了。絕大多數人提起sql標準,涉及的內容其實是sql89或sql92裡頭最基本或者說最核心的一部分。其實,自從 很久沒有什麼工作需要參考sql標...