用 regexp_like這個函數(shù)來解決,正則表達式為:[[:punct:]]+這個正則可以找出任何標點符號。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比杞縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式杞縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋杞縣地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
查詢value中包含任何標點符號的記錄如下:
select * from xxx where regexp_like(value,'[[:punct:]]+');
POSIX 正則表達式由標準的元字符(metacharacters)所構(gòu)成: '$' 匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表達式零次或一次。 '*' 匹配前面的子表達式零次或多次。
'|' 指明兩項之間的一個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數(shù)字組合成的 '( )' 標記一個子表達式的開始和結(jié)束位置。 '{m,n}' 一個精確地出現(xiàn)次數(shù)范圍,m=出現(xiàn)次數(shù)=n,'{m}'表示出現(xiàn)m次,'{m,}'表示至少出現(xiàn)m次。
\num 匹配 num,其中 num 是一個正整數(shù)。對所獲取的匹配的引用。 [[:alpha:]] 任何字母。
[[:digit:]] 任何數(shù)字。
[[:alnum:]] 任何字母和數(shù)字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大寫字母。
[[:lower:]] 任何小寫字母。
[[:punct:]] 任何標點符號。
[[:xdigit:]] 任何16進制的數(shù)字,相當于[0-9a-fA-F]。 \轉(zhuǎn)義符 *, +, ?, {n}, {n,}, {n,m} 限定符^, $, anymetacharacter 位置和順序。
如果Oracle版本不是太低的話,使用 正則表達式函數(shù) REGEXP_SUBSTR 處理。\x0d\x0a\x0d\x0a5個參數(shù)\x0d\x0a第一個是輸入的字符串\x0d\x0a第二個是正則表達式\x0d\x0a第三個是標識從第幾個字符開始正則表達式匹配。(默認為1)\x0d\x0a第四個是標識第幾個匹配組。(默認為1)\x0d\x0a第五個是是取值范圍:\x0d\x0ai:大小寫不敏感;\x0d\x0ac:大小寫敏感;\x0d\x0an:點號 . 不匹配換行符號;\x0d\x0am:多行模式;\x0d\x0ax:擴展模式,忽略正則表達式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');
REGEXP_COUNT 的語法如下所示:
REGEXP_COUNT ( source_char, pattern [, position [, match_param]])
REGEXP_COUNT 返回pattern 在source_char 串中出現(xiàn)的次數(shù)。如果未找到匹配,則函數(shù)返回0。position 變量告訴Oracle 在源串的什么位置開始搜索。在開始位置之后每出現(xiàn)一次模式,都會使計數(shù)結(jié)果增加1。
match_param 變量支持下面幾個值:
‘i’ 用于不區(qū)分大小寫的匹配
‘c’ 用于區(qū)分大小寫的匹配
‘n’ 允許句點(.)作為通配符去匹配換行符。如果省略該參數(shù),則句點將不匹配換行符
‘m’ 將源串視為多行。即Oracle 將^和$分別看作源串中任意位置任何行的開始和結(jié)束,而不是僅僅看作整個源串的開始或結(jié)束。如果省略該參數(shù),則Oracle將源串看作一行。
‘x’ 忽略空格字符。默認情況下,空格字符與自身相匹配。
如果為match_param 指定了多個相互矛盾的值,那么Oracle 使用最后一個值。
可以用REGEXP_COUNT 來修改本章前面的LENGTH 示例。可以將下面的語法
select (LENGTH('GEORGE') - LENGTH(REPLACE('GEORGE', 'GE', NULL)) ) / LENGTH('GE') AS Counter
from DUAL;
COUNTER
-------
2
用如下語法來代替,得到的結(jié)果是相同的:
select REGEXP_COUNT('GEORGE','GE',1,'i')
from DUAL;
用REGEXP_COUNT 取代LENGTH 還有一個好處,即可以進行不區(qū)分大小寫的搜索,因此,前面的查詢也可以寫成下面這樣:
select REGEXP_COUNT('GEORGE','ge',1,'i')
from DUAL;
文章標題:oracle怎么匹配數(shù)字,oracle匹配非數(shù)字
文章分享:http://chinadenli.net/article13/dsgghds.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化、微信小程序、虛擬主機、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)