SQL萬用字元及正規表示式

2021-10-02 15:25:45 字數 3948 閱讀 1358

只用where函式進行資料查詢的話,功能未免顯得有些單一,這時我們引入了萬用字元。萬用字元之前匹配的操作符是like函式。

萬用字元的搜尋時間相當長,所以一般盡量不要將其他搜尋等效替代成萬用字元,即使要用的話,也應該盡量的寫在搜尋語句的後面而不是最開始。

% 表示任何字元出現任意次數(0次,1次,n次)。比如下列表示的就是搜尋jet開頭的後面跟任意字元的行

select*fromtablewherecolnamelike『jet%』;

而下列則表示搜尋在任意位置的含有jet的行

select*fromtablewherecolnamelike『%jet%』;

也可以搜尋以a開頭b結尾的行,

select*fromtablewherecolnamelike『a%b』;

注意:萬用字元%並不能匹配null值。

且萬用字元區分大小寫

與%不同 -匹配的是單個字元

select*fromtablewherecolnamelike『jet-』; 匹配的就是 jeta,jetb,jetc

select*fromtablewherecolnamelike『jet -』; 匹配的就是 jet a ,jet b,jet c

正規表示式適用於更加複雜的搜尋場景。正規表示式所匹配的操作符為regexp,正規表示式不區分大小寫 ,如有需求可在regexp後用binary

我們先從搜尋帶jet的開始

select*fromtablewherecolnameregexp『jet』;

而如果要匹配 jeta jetb,就要使用 . 來,它用來匹配任意乙個字元,和萬用字元的 - 是一樣的作用

select*fromtablewherecolnameregexp『jet.』;

下文表示對某一列中含有jeta,jetb的行進行搜尋 用 | 來表示 or

select*fromtablewherecolnameregexp『jeta|jetb』;

select*fromtablewherecolnameregexp『jeta|jetb|jetc』;

運用[ ]來匹配任意單個字元

select*fromtablewherecolnameregexp『jeta|jetb|jetc』;

等同於select*fromtablewherecolnameregexp『jet[abc]』;

[abc]是[a|b|c]的簡寫

select*fromtablewherecolnameregexp『jet[^abc]』;

則表示匹配除了jeta jetb jetc之外的任何數。

[0123456789]可以簡化為[0-9]

. 單獨使用的話用來表示任意單個字元,但是如果我們想搜尋包含 . 的語句,要使用\.來表示查詢.

select*fromtablewherecolnameregexp『\.』;

我們稱之為轉義,適用於所有在sql正則化表達中有著特殊作用的符號。

元字元說明

\f換頁

\n換行

\r回車

\t製表

\v縱向製表類說明

[:alnum:]

alpha(upper or lower) and number[0-9]

[:alpha:]

顧名思義 所有大小寫字母

[:blank:]

空格和製表

[:digit:]

任意數字[0-9]

[:print:]

任意可列印字元

[:graph:]

除空格外的任意可列印字元

[:lower:]

小寫字母[a-z]

[:upper:]

大寫字母[a-z]

[:space:]

匹配元字元

之前提到的都是匹配單個位置出現任意數的,而我們經常需要查詢更加複雜的情況,這時候我們使用重複元字元。

元字元說明

*0個或多個匹配

+1個或多個匹配

?0個或乙個匹配

n個匹配

不少於n個的匹配

匹配數目的範圍 (m<255)

select*fromtablewherecolnameregexp『\([0-9] sticks?\)』;

表達的是搜尋 1 stick,2stick或1 sticks,2sticks。

?跟在stick後面 表示的是搜尋 stick或者sticks

select*fromtablewherecolnameregexp『[[:digit:]]』;

表示搜尋四位數

等同於[0-9][0-9][0-9][0-9]

元字元說明^

文字的開始

$文字的結束

[[:<:]]

詞次的開始

[[:>:]]

詞的結束

select*fromtablewherecolnameregexp』 ^[0-9\.]』;

表示搜尋以數字開頭或.開頭的字元

注意^放在中表示否定的意思

正規表示式萬用字元及vim

萬用字元 正規表示式 vim 使用 1.萬用字元 多對與檔名上操作 比如查詢find,ls,cp abc 有a或者有b或者有c abc 除了含有a或者b或者c abc 除了含有a或者b或者c alpha 單個字母 lower 單個小寫字母 upper 單個大寫字母 alnum 單個字母或數字 pun...

萬用字元 正規表示式

萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl。當您鍵入 ls txt 命令並按 enter 後,尋找哪些檔案同 txt 模式相匹配的任務不是由 ls 命令,而是由 shell 自己完成。這需要對命令列是如何被 shell 解析的作進一...

萬用字元 正規表示式

萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl.當您鍵入ls.txt命令並按enter後,尋找哪些檔案同.txt模式相匹配的任務不是由ls命令,而是由shell自己完成.這需要對命令列是如何被shell解析的作進一步解釋.當您鍵入 ls...