oracle lz047中的REGEXP_LIKE(cust_first_name,'[[:digit:]]')) 轉
View the Exhibit and examine the description of the CUSTOMERS table.
You want to add a constraint on the CUST_FIRST_NAME column of the CUSTOMERS table so that the
value inserted in the column does not have numbers.
Which SQL statement would you use to accomplish the task?
A. ALTER TABLE CUSTOMERS
ADD CONSTRAINT cust_f_name
CHECK(REGEXP_LIKE(cust_first_name,'^AZ'))
NOVALIDATE ;
B. ALTER TABLE CUSTOMERS
ADD CONSTRAINT cust_f_name
CHECK(REGEXP_LIKE(cust_first_name,'^[09]'))
NOVALIDATE ;
C. ALTER TABLE CUSTOMERS
ADD CONSTRAINT cust_f_name
CHECK(REGEXP_LIKE(cust_first_name,'[[:alpha:]]'))NOVALIDATE ;
D. ALTER TABLE CUSTOMERS
ADD CONSTRAINT cust_f_name
CHECK(REGEXP_LIKE(cust_first_name,'[[:digit:]]'))NOVALIDATE ;
一看答案知道是用的正規表示式,這個東西做開發的時候用過,於是覺得應當是選A,但答案是選C,於是上網查了一下,終於是瞭解了,順手貼下來。
oracle 10g正規表示式 REGEXP_LIKE 用法
ORACLE中的支援正規表示式的函式主要有下面四個:
1,REGEXP_LIKE :與LIKE的功能相似
2,REGEXP_INSTR :與INSTR的功能相似
3,REGEXP_SUBSTR :與SUBSTR的功能相似
4,REGEXP_REPLACE :與REPLACE的功能相似
它們在用法上與Oracle SQL 函式LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
但是它們使用POSIX 正規表示式代替了老的百分號(%)和萬用字元(_)字元。
POSIX 正規表示式由標準的元字元(metacharacters)所構成:
'^' 匹配輸入字串的開始位置,在方括號表示式中使用,此時它表示不接受該字符集合。
'$' 匹配輸入字串的結尾位置。如果設定了 RegExp 物件的 Multiline 屬性,則 $ 也匹
配 '\n' 或 '\r'。
'.' 匹配除換行符之外的任何單字元。
'?' 匹配前面的子表示式零次或一次。
'+' 匹配前面的子表示式一次或多次。
'*' 匹配前面的子表示式零次或多次。
'|' 指明兩項之間的一個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的
字串。
'( )' 標記一個子表示式的開始和結束位置。
'[]' 標記一箇中括號表示式。
'{m,n}' 一個精確地出現次數範圍,m=出現m次。
\num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。
字元簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何數字。
[[:alnum:]] 任何字母和數字。
[[:space:]] 任何白字元。
[[:upper:]] 任何大寫字母。
[[:lower:]] 任何小寫字母。
[[:punct:]] 任何標點符號。
[[:xdigit:]] 任何16進位制的數字,相當於[0-9a-fA-F]。
各種操作符的運算優先順序
\轉義符
(), (?:), (?=), [] 圓括號和方括號
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 位置和順序
|
*/
--建立表
create table fzq
(
id varchar(4),
value varchar(10)
);
--資料插入
insert into fzq values
('1','1234560');
insert into fzq values
('2','1234560');
insert into fzq values
('3','1b3b560');
insert into fzq values
('4','abc');
insert into fzq values
('5','abcde');
insert into fzq values
('6','ADREasx');
insert into fzq values
('7','123 45');
insert into fzq values
('8','adc de');
insert into fzq values
('9','adc,.de');
insert into fzq values
('10','1B');
insert into fzq values
('10','abcbvbnb');
insert into fzq values
('11','11114560');
insert into fzq values
('11','11124560');
--regexp_like
--查詢value中以1開頭60結束的記錄並且長度是7位
select * from fzq where value like '1____60';
select * from fzq where regexp_like(value,'1....60');
--查詢value中以1開頭60結束的記錄並且長度是7位並且全部是數字的記錄。
--使用like就不是很好實現了。
select * from fzq where regexp_like(value,'1[0-9]{4}60');
-- 也可以這樣實現,使用字符集。
select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');
-- 查詢value中不是純數字的記錄
select * from fzq where not regexp_like(value,'^[[:digit:]]+$');
-- 查詢value中不包含任何數字的記錄。
select * from fzq where regexp_like(value,'^[^[:digit:]]+$');
--查詢以12或者1b開頭的記錄.不區分大小寫。
select * from fzq where regexp_like(value,'^1[2b]','i');
--查詢以12或者1b開頭的記錄.區分大小寫。
select * from fzq where regexp_like(value,'^1[2B]');
-- 查詢資料中包含空白的記錄。
select * from fzq where regexp_like(value,'[[:space:]]');
--查詢所有包含小寫字母或者數字的記錄。
select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
--查詢任何包含標點符號的記錄。
select * from fzq where regexp_like(value,'[[:punct:]]');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/241379/viewspace-731507/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【轉】Oracle 正規表示式函式-REGEXP_LIKE 使用例子Oracle函式
- oracle正規表示式regexp_like的使用Oracle
- oracle regexp_like用法與正則Oracle
- oracle regexp_like介紹和例子Oracle
- Oracle的regexp_like函式用法一例Oracle函式
- oracle正規表示式regexp_like的用法詳解Oracle
- oracle 10g 正規表示式 REGEXP_LIKEOracle 10g
- oracle 10g正規表示式 REGEXP_LIKE 用法Oracle 10g
- Nth Digit【難】Git
- Oracle中Kill session的研究 for oracle -- 轉OracleSession
- Oracle中的LOB操作(轉)Oracle
- ORACLE中的異常(轉)Oracle
- Last digit of a huge numberASTGit
- ZOJ First Digit(瞎搞)Git
- ORACLE中的DUMP轉儲方法Oracle
- Oracle中DUMP的轉儲方法Oracle
- D - Digit vs Square RootGit
- (轉)ORACLE 中IN和EXISTS的區別Oracle
- oracle中單引號的轉譯Oracle
- 漫談oracle中的空值(轉)Oracle
- Oracle中的進位制轉換Oracle
- oracle中的級聯刪除(轉)Oracle
- oracle開發中序列的使用(轉)Oracle
- Oracle中Kill session [轉]OracleSession
- LintCode-Digit CountsGit
- oracle10g中的asm的配置(轉)OracleASM
- 試驗Oracle中實現行列轉換的方法(轉)Oracle
- MySQL和Oracle中的隱式轉換MySqlOracle
- Oracle中的direct path read事件(轉)Oracle事件
- Oracle中Date的各種格式轉換Oracle
- 減少ORACLE中的磁碟I/O(轉)Oracle
- oracle中多列轉行Oracle
- 轉--oracle中替代LIKE方法Oracle
- Nth Digit 第N個數字Git
- LeetCode-Number of Digit OneLeetCodeGit
- 233. Number of Digit OneGit
- UVa 1225 - Digit CountingGit
- Leetcode 400.Nth DigitLeetCodeGit