2013-08-07 5 views
2

그래서 varchar2가 4 개의 알파벳 문자와 3 개의 숫자 문자로 구성되어 있는지 확인하고 싶습니다.오라클 : varchar2의 알파벳 문자와 숫자 문자에 대한 제약 조건을 확인하십시오.

CONSTRAINT Code_Check check (REGEXP_LIKE(Code,'[^A-Z][^A-Z][^A-Z][^A-Z][0-9][0-9][0-9]')) 

CONSTRAINT Check_Code check (Code LIKE '[^A-Z][^A-Z][^A-Z][^A-Z][0-9][0-9][0-9]' 

CONSTRAINT Check_Code check (Code LIKE '[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9]') 

CONSTRAINT Check_Code check (Code regexp_LIKE '[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9]') 

CONSTRAINT Check_Code check (Code LIKE '[^A-Z]{4}[0-9]{3}') 

을 단순히 오류 얻을 : AABB123 또는 LMNO987

지금까지 내가 해봤

insert into Table1 (Code) values ('HELP555') 
Error report: 
SQL Error: ORA-02290: check constraint (BOB.TABLE1_CHECK_CODE) violated 
02290. 00000 - "check constraint (%s.%s) violated" 
*Cause: The values being inserted do not satisfy the named check 
*Action: do not insert values that violate the constraint. 

답변

2

정규 표현식을 잘하지 않습니다, 그리고 당신이 사용했던 방법은 꽤입니다 성가신.

대신 POSIX character classes을 사용할 수 있습니다. 특정 경우,과 같이 될 것입니다 :

[[:alpha:]]{4}[[:digit:]]{3} 

때문에 제약 조건 확인이 3 숫자 다음에 4 개 알파벳 문자가 있다는 것을 확인

CONSTRAINT Code_Check check (REGEXP_LIKE(Paper_Code,'[[:alpha:]]{4}[[:digit:]]{3}') 

입니다.

regexp cheatsheet

에서 사용할 수 SQL fiddle & 더 많은 정보에
관련 문제