更新時(shí)間:2022-07-14 10:26:09 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1595次
在 Oracle 數(shù)據(jù)庫中使用正則表達(dá)式:概述
Oracle 數(shù)據(jù)庫中的正則表達(dá)式元字符
在 SQL 語句中使用正則表達(dá)式:場(chǎng)景
本節(jié)包含以下主題:
什么是正則表達(dá)式?
Oracle 數(shù)據(jù)庫正則表達(dá)式有什么用?
正則表達(dá)式的 Oracle 數(shù)據(jù)庫實(shí)現(xiàn)
Oracle 數(shù)據(jù)庫支持 POSIX 正則表達(dá)式標(biāo)準(zhǔn)
什么是正則表達(dá)式?
正則表達(dá)式使您能夠使用標(biāo)準(zhǔn)化的語法約定在字符串?dāng)?shù)據(jù)中搜索模式。您可以通過以下類型的字符指定正則表達(dá)式:
元字符,它們是指定搜索算法的運(yùn)算符文字,即您要搜索的字符。
正則表達(dá)式可以指定復(fù)雜的字符序列模式。例如,以下正則表達(dá)式搜索字面量f或字面量、ht字面量(可選地后跟字面量),最后是冒號(hào) ( ) 字面量: tps:
(f|ht)tps?:
括號(hào)是將一系列模式元素組合成一個(gè)元素的元字符;管道符號(hào) ( |) 與組中的備選之一匹配。問號(hào) ( ?) 是一個(gè)元字符,表示前面的模式(在本例中為s字符)是可選的。因此,前面的正則表達(dá)式匹配http:、https:、ftp:和ftps:字符串。
Oracle 數(shù)據(jù)庫正則表達(dá)式有什么用?
正則表達(dá)式是 Perl 和 Java 等編程語言的強(qiáng)大文本處理組件。例如,Perl 腳本可以處理目錄中的每個(gè) HTML 文件,將其內(nèi)容作為單個(gè)字符串讀入標(biāo)量變量,然后使用正則表達(dá)式在字符串中搜索 URL。許多開發(fā)人員使用 Perl 編寫的原因之一是其強(qiáng)大的模式匹配功能。
Oracle 對(duì)正則表達(dá)式的支持使開發(fā)人員能夠在數(shù)據(jù)庫中實(shí)現(xiàn)復(fù)雜的匹配邏輯。由于以下原因,此技術(shù)很有用:
通過在 Oracle 數(shù)據(jù)庫中集中匹配邏輯,您可以避免中間層應(yīng)用程序?qū)?SQL 結(jié)果集進(jìn)行密集的字符串處理。例如,生命科學(xué)客戶經(jīng)常依賴 Perl 對(duì)存儲(chǔ)在巨大的 DNA 和蛋白質(zhì)數(shù)據(jù)庫中的生物信息學(xué)數(shù)據(jù)進(jìn)行模式分析。以前,尋找蛋白質(zhì)序列的匹配項(xiàng),例如[AG].{4}GK[ST]將在中間層處理。SQL 正則表達(dá)式函數(shù)使處理邏輯更接近數(shù)據(jù),從而提供更有效的解決方案。
在 Oracle 數(shù)據(jù)庫10g之前,開發(fā)人員經(jīng)常在客戶端上編寫數(shù)據(jù)驗(yàn)證邏輯,需要為多個(gè)客戶端復(fù)制相同的驗(yàn)證邏輯。使用服務(wù)器端正則表達(dá)式來強(qiáng)制約束可以解決這個(gè)問題。
內(nèi)置的 SQL 和 PL/SQL 正則表達(dá)式函數(shù)和條件使字符串操作比以前版本的 Oracle 數(shù)據(jù)庫更強(qiáng)大、更簡(jiǎn)單。
正則表達(dá)式的 Oracle 數(shù)據(jù)庫實(shí)現(xiàn)
Oracle 數(shù)據(jù)庫通過一組 Oracle 數(shù)據(jù)庫 SQL 函數(shù)和條件實(shí)現(xiàn)正則表達(dá)式支持,使您能夠搜索和操作字符串?dāng)?shù)據(jù)。您可以在任何支持 Oracle 數(shù)據(jù)庫 SQL 的環(huán)境中使用這些函數(shù)。您可以在文本文字、綁定變量或任何包含字符數(shù)據(jù)的列上使用這些函數(shù),例如CHAR、NCHAR、CLOB、NCLOB、NVARCHAR2和VARCHAR2(但不是LONG)。
函數(shù)或條件中的字符串文字REGEXP符合 SQL 文本文字的規(guī)則。默認(rèn)情況下,正則表達(dá)式必須用單引號(hào)括起來。如果您的正則表達(dá)式包含單引號(hào)字符,則輸入兩個(gè)單引號(hào)來表示表達(dá)式中的一個(gè)單引號(hào)。此技術(shù)可確保整個(gè)表達(dá)式由 SQL 函數(shù)解釋并提高代碼的可讀性。您還可以使用 q-quote 語法來定義您自己的字符來終止文本文字。例如,您可以用井號(hào) ( #) 分隔正則表達(dá)式,然后在表達(dá)式中使用單引號(hào)。
Oracle 數(shù)據(jù)庫支持 POSIX 正則表達(dá)式標(biāo)準(zhǔn)
Oracle對(duì)正則表達(dá)式的實(shí)現(xiàn)符合以下標(biāo)準(zhǔn):
IEEE 便攜式操作系統(tǒng)接口 (POSIX) 標(biāo)準(zhǔn)草案 1003.2/D11.2
Unicode 聯(lián)盟的 Unicode 正則表達(dá)式指南
Oracle 數(shù)據(jù)庫遵循 POSIX 標(biāo)準(zhǔn)中為匹配 ASCII(英語語言)數(shù)據(jù)定義的這些運(yùn)算符的確切語法和匹配語義。
Oracle 數(shù)據(jù)庫通過以下方式增強(qiáng)了正則表達(dá)式支持:
將多語言數(shù)據(jù)的匹配功能擴(kuò)展到 POSIX 標(biāo)準(zhǔn)中指定的范圍之外。
添加對(duì)不包含在 POSIX 標(biāo)準(zhǔn)中但不與之沖突的常見 Perl 正則表達(dá)式擴(kuò)展的支持。Oracle 數(shù)據(jù)庫為一些最常用的 Perl 正則表達(dá)式運(yùn)算符提供內(nèi)置支持,例如字符類快捷方式、非貪婪修飾符等。
Oracle 數(shù)據(jù)庫支持正則表達(dá)式中使用的一組常見元字符。支持的元字符和相關(guān)特性的行為在“Oracle 數(shù)據(jù)庫中的正則表達(dá)式元字符”中進(jìn)行了描述。
以上就是關(guān)于“Oracle正則表達(dá)式概述”如果大家想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Oracle教程,里面還有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)