2011-09-22 72 views
0

可以在任何一個解釋爲什麼NOVALIDATE寫自己爲什麼阿爾法betwnn二 「:」 和 「[]」下面的比較是什麼意思?

ALTER TABLE CUSTOMERS 
ADD CONSTRAINT cust_f_name 
CHECK(REGEXP_LIKE(cust_first_name,'[[:alpha:]]'))NOVALIDATE ; 

,什麼

REGEXP_LIKE(cust_first_name,'^[0-9]') 

REGEXP_LIKE(cust_first_name,'^A-Z') 

手段?數字不允許嗎?

+0

[這裏閱讀所有關於'alpha'。](http://psoug.org/reference/regexp.html)這是關於Microsoft SQL Server 2008嗎? – bzlm

+0

從IZO045 PLSQL認證考試中解決問題時遇到過嗎? – Shine

+0

請一次提出一個問題。 –

回答

3

這些是正則表達式,在Oracle中用作表約束。

  • [:alpha:]匹配alpha POSIX類中的任何字符;即字母字符(a-z和A-Z)。
  • ^,在^[0-9]的上下文中,意思是從字符串的開頭看。 [0-9]是數字的類別(即,0,1,2,3,4,5,6,7,8和9)
  • ^A-Z意味着否定類A-Z;所以它會匹配任何不包含大寫字母字符的東西。

NOVALIDATE意味着,一旦約束添加到表CUSTOMERS,甲骨文將不檢查任何當前條目違反約束,只把它應用到新插入的記錄。

+0

*來自user3752500的評論:*我不認爲''A-Z''意味着否定''A-Z'',但開始時用「A-Z」而不是那個。 –