第4天 sql萬用字元與正則式

2021-07-03 13:03:21 字數 2259 閱讀 5560

mariadb的like操作符支援以下萬用字元:

萬用字元含義

%任意字元出現任意次數

_單個字元

書中出現的(方括號),mariadb的like操作符並不支援,更精細的匹配需要使用正則式。

例子:

#查詢name中含有'li'的記錄

select * from students

where name like('%li%');

#匹配name為三字元——'li'後跟任乙個字元——的模式

select * from students

where name like('li_');

要注意的是mariadb預設不區分大小寫。

mariadb的正則模式使用regexpnot regexp操作符,或rlikenot rlike,它們是同義詞。

mariadb正則式支援以下模式:

模式含義

.任意單個字元

重複m到n次前面的字元,單獨寫表示重複m次前面的字元

*重複0個或多個前一字元,相當於

+重複1個或多個前一字元,相當於

?0個或乙個前一字元,相當於

|or匹配,匹配多個模式之一,如』zhang|li』

匹配方括號內的任意字元,可以在裡面使用-表示範圍,如[0-9a-z] 模式

含義[[:alnum:]]

任意字母和數字(同 [a-za-z0-9])

[[:alpha:]]

任意字母(同 [a-za-z])

[[:lower:]]

任意小寫字母(同 [a-z])

[[:upper:]]

任意大小字母(同 [a-z])

[[:digit:]]

任意數字(同[0-9])

[[:xdigit:]]

任意十六進製制數字(同 [a-fa-f0-9])

[[:blank:]]

空格和製表(同 [\t])

[[space:]]

包括空格在內的任意空白字元(同 [\f\n\t\r\v])

[[:cntrl:]]

ascii控制字元(ascii 0到31和127)

[[:print:]]

任意可列印字元

[[:graph:]]

與[[:print:]] 相同,但不包括空格

[[:punct:]]

既不在 [[:alnum:]] 又不在 [[:cntrl:]] 中的任意字元

操作中使用[a-z]或[a-z],[[:lower:]]或[[:upper:]]並沒有區別,因為mariadb預設不區分大小寫,應該可以通過其他的設定區分,這裡先不深究。

模式含義

^匹配行首,用在方括號內表示否定,如[^0-9]匹配非數字字元

$匹配行尾

[[:<:]]

詞的開始

[[:>:]]

詞的結尾

使用\\對特殊字元進行轉義

模式含義

\\--

\\..

\\其他特殊字元

其他特殊字元

\\f換頁

\\n換行

\\r回車

\\t製表

\\v縱向製表

like 匹配整個串,而regexp匹配子串。

簡單的正規表示式測試 可以在不使用資料庫的情況下用select來測試正規表示式。

regexp檢查總是返回0(沒有匹配)或1(匹配),可以用帶文字串的regexp來測試表示式,並試驗它們。相應的語法如下:

select

'hello' regexp '[0-9]';

這個例子返回0(因為文字hello中沒有數字)。

正如所見,sql的萬用字元很有用。但這種功能是有代價的,即:通佩符搜尋的處理一般要比前面討論的其他搜尋所花時間更長。這裡給出一些使用萬用字元要記住的技巧:

- 不要過分使用萬用字元。如果其他操作符能達到相同的目的,應該使用其他操作符。

- 在卻是需要使用萬用字元時,除非絕對有必要,否則不要把它們用在搜尋模式的開始處。把萬用字元置於搜尋模式的開始處,搜尋起來時最慢的。

- 仔細注意萬用字元號的位置。如果放錯地方,可能不會返回想要的資料。

——《sql必知必會》

第3天 sql基本檢索與資料過濾

select select 列名稱 from 表名稱 sql語句是不區分大小寫的,而且會忽略空格,語句可以一行給出,也可以分成多行。顯然分成多行,且使用大寫將關鍵字與表名列名等區分開更容易閱讀和除錯。另外每個sql語句必須以分號結尾。select id,name from students sele...

蘇嵌嵌入式linux實訓 第 4 天

1.資料型別 什麼是資料型別 在資料結構中資料型別是乙個值的集合以及定義在這個值集上的一組操作。變數是用來儲存值的所在處,它們有名字和資料型別。資料型別有哪些 char 字元型,short 短整型,int 整型,long 長整型,float 單精度浮點型,double 雙精度浮點型 強制型別轉換 一...

第4天 C語言與畫面顯示的練習

2020.3.28 1.用c語言實現記憶體寫入 2.條形圖案 harib01b 3.挑戰指標 harib01c c語言小知識 4.指標的應用 1 harib01d 5.指標的應用 2 harib01e 6.色號設定 harib01f projects 04 day下的harib01f的naskfun...