Oracle Study之--Oracle正則表達式
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為桐廬等服務(wù)建站,桐廬等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為桐廬企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
案例要求:
建立check constraint ,要求字段輸入內(nèi)容必須是“00[number][number][a-z]”:
通過正則表達式建立如下約束(constraint):
17:20:13 SCOTT@ prod >desc card
Name Null? Type
----------------------------------------------------------------- -------- --------------------------------------------
ID NOT NULL VARCHAR2(10)
17:22:53 SCOTT@ prod >
17:19:05 SCOTT@ prod >alter table card drop constraint card_ck;
Table altered.
建立正則表達式:
17:19:19 SCOTT@ prod >alter table card add constraint card_ck check (REGEXP_LIKE(id,'00[[:digit:]]{2}[[:lower:]]{1}'));
Table altered.
Elapsed: 00:00:00.06
測試:
17:19:33 SCOTT@ prod >insert into card values ('0055a');
1 row created.
Elapsed: 00:00:00.01
17:19:50 SCOTT@ prod >insert into card values ('0065z');
1 row created.
Elapsed: 00:00:00.00
17:20:04 SCOTT@ prod >insert into card values ('1188a');
insert into card values ('1188a')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CARD_CK) violated
Elapsed: 00:00:00.01
正則表達式說明:
表 5:REGEXP_LIKE 操作符
語法 | 說明 |
REGEXP_LIKE(source_string, pattern [, match_parameter]) | source_string 支持字符數(shù)據(jù)類型(CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2 和 NCLOB,但不包括 LONG)。pattern 參數(shù)是正則表達式的另一個名稱。match_parameter 允許可選的參數(shù)(如處理換行符、保留多行格式化以及提供對區(qū)分大小寫的控制)。 |
表 1:定位元字符
元字符 | 說明 |
^ | 使表達式定位至一行的開頭 |
$ | 使表達式定位至一行的末尾 |
表 2:量詞或重復(fù)操作符
量詞 | 說明 |
* | 匹配 0 次或更多次 |
? | 匹配 0 次或 1 次 |
+ | 匹配 1 次或更多次 |
{m} | 正好匹配 m 次 |
{m,} | 至少匹配 m 次 |
{m, n} | 至少匹配 m 次但不超過 n 次 |
表 3:預(yù)定義的 POSIX 字符類
字符類 | 說明 |
[:alpha:] | 字母字符 |
[:lower:] | 小寫字母字符 |
[:upper:] | 大寫字母字符 |
[:digit:] | 數(shù)字 |
[:alnum:] | 字母數(shù)字字符 |
[:space:] | 空白字符(禁止打印),如回車符、換行符、豎直制表符和換頁符 |
[:punct:] | 標(biāo)點字符 |
[:cntrl:] | 控制字符(禁止打?。?/p> |
[:print:] | 可打印字符 |