更新時間:2022-07-14 10:26:09 來源:動力節(jié)點 瀏覽1487次
在 Oracle 數(shù)據(jù)庫中使用正則表達(dá)式:概述
Oracle 數(shù)據(jù)庫中的正則表達(dá)式元字符
在 SQL 語句中使用正則表達(dá)式:場景
本節(jié)包含以下主題:
什么是正則表達(dá)式?
Oracle 數(shù)據(jù)庫正則表達(dá)式有什么用?
正則表達(dá)式的 Oracle 數(shù)據(jù)庫實現(xiàn)
Oracle 數(shù)據(jù)庫支持 POSIX 正則表達(dá)式標(biāo)準(zhǔn)
什么是正則表達(dá)式?
正則表達(dá)式使您能夠使用標(biāo)準(zhǔn)化的語法約定在字符串?dāng)?shù)據(jù)中搜索模式。您可以通過以下類型的字符指定正則表達(dá)式:
元字符,它們是指定搜索算法的運算符文字,即您要搜索的字符。
正則表達(dá)式可以指定復(fù)雜的字符序列模式。例如,以下正則表達(dá)式搜索字面量f或字面量、ht字面量(可選地后跟字面量),最后是冒號 ( ) 字面量: tps:
(f|ht)tps?:
括號是將一系列模式元素組合成一個元素的元字符;管道符號 ( |) 與組中的備選之一匹配。問號 ( ?) 是一個元字符,表示前面的模式(在本例中為s字符)是可選的。因此,前面的正則表達(dá)式匹配http:、https:、ftp:和ftps:字符串。
Oracle 數(shù)據(jù)庫正則表達(dá)式有什么用?
正則表達(dá)式是 Perl 和 Java 等編程語言的強(qiáng)大文本處理組件。例如,Perl 腳本可以處理目錄中的每個 HTML 文件,將其內(nèi)容作為單個字符串讀入標(biāo)量變量,然后使用正則表達(dá)式在字符串中搜索 URL。許多開發(fā)人員使用 Perl 編寫的原因之一是其強(qiáng)大的模式匹配功能。
Oracle 對正則表達(dá)式的支持使開發(fā)人員能夠在數(shù)據(jù)庫中實現(xiàn)復(fù)雜的匹配邏輯。由于以下原因,此技術(shù)很有用:
通過在 Oracle 數(shù)據(jù)庫中集中匹配邏輯,您可以避免中間層應(yīng)用程序?qū)?SQL 結(jié)果集進(jìn)行密集的字符串處理。例如,生命科學(xué)客戶經(jīng)常依賴 Perl 對存儲在巨大的 DNA 和蛋白質(zhì)數(shù)據(jù)庫中的生物信息學(xué)數(shù)據(jù)進(jìn)行模式分析。以前,尋找蛋白質(zhì)序列的匹配項,例如[AG].{4}GK[ST]將在中間層處理。SQL 正則表達(dá)式函數(shù)使處理邏輯更接近數(shù)據(jù),從而提供更有效的解決方案。
在 Oracle 數(shù)據(jù)庫10g之前,開發(fā)人員經(jīng)常在客戶端上編寫數(shù)據(jù)驗證邏輯,需要為多個客戶端復(fù)制相同的驗證邏輯。使用服務(wù)器端正則表達(dá)式來強(qiáng)制約束可以解決這個問題。
內(nèi)置的 SQL 和 PL/SQL 正則表達(dá)式函數(shù)和條件使字符串操作比以前版本的 Oracle 數(shù)據(jù)庫更強(qiáng)大、更簡單。
正則表達(dá)式的 Oracle 數(shù)據(jù)庫實現(xiàn)
Oracle 數(shù)據(jù)庫通過一組 Oracle 數(shù)據(jù)庫 SQL 函數(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á)式必須用單引號括起來。如果您的正則表達(dá)式包含單引號字符,則輸入兩個單引號來表示表達(dá)式中的一個單引號。此技術(shù)可確保整個表達(dá)式由 SQL 函數(shù)解釋并提高代碼的可讀性。您還可以使用 q-quote 語法來定義您自己的字符來終止文本文字。例如,您可以用井號 ( #) 分隔正則表達(dá)式,然后在表達(dá)式中使用單引號。
Oracle 數(shù)據(jù)庫支持 POSIX 正則表達(dá)式標(biāo)準(zhǔn)
Oracle對正則表達(dá)式的實現(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ù)定義的這些運算符的確切語法和匹配語義。
Oracle 數(shù)據(jù)庫通過以下方式增強(qiáng)了正則表達(dá)式支持:
將多語言數(shù)據(jù)的匹配功能擴(kuò)展到 POSIX 標(biāo)準(zhǔn)中指定的范圍之外。
添加對不包含在 POSIX 標(biāo)準(zhǔn)中但不與之沖突的常見 Perl 正則表達(dá)式擴(kuò)展的支持。Oracle 數(shù)據(jù)庫為一些最常用的 Perl 正則表達(dá)式運算符提供內(nèi)置支持,例如字符類快捷方式、非貪婪修飾符等。
Oracle 數(shù)據(jù)庫支持正則表達(dá)式中使用的一組常見元字符。支持的元字符和相關(guān)特性的行為在“Oracle 數(shù)據(jù)庫中的正則表達(dá)式元字符”中進(jìn)行了描述。
以上就是關(guān)于“Oracle正則表達(dá)式概述”如果大家想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點的Oracle教程,里面還有更豐富的知識等著大家去學(xué)習(xí),希望對大家能夠有所幫助哦。
初級 202925
初級 203221
初級 202629
初級 203743