2017-05-11 13 views
1

전 세계 어디에서나 검색하여 올바른 형식의 전자 메일임을 확인하기 위해 CHECK 제한 조건을 적용했습니다. 같은 지금까지 내가 찾은 정말 길고 불필요한 표현 :오라클 데이터베이스의 전자 메일에 대한 제약 조건을 확인하십시오.

create table t (
email varchar2(320) check (
regexp_like(email, '[[:alnum:]][email protected][[:alnum:]]+\.[[:alnum:]]') 
) 
); 

create table stk_t (
email varchar2(320) check (
email LIKE '%@%.%' AND email NOT LIKE '@%' AND email NOT LIKE '%@%@%' 
) 
); 

확실히 간단한 방법이있다? Oracle 11g 데이터베이스와 SQL Developer IDE를 사용하고 있습니다.

constraint Emails_Check check (Emails LIKE '%[email protected]%_._%') 

사람이 이메일을 확인하는 가장 효율적인 방법이 있다면 알려 주시기 바랍니다 수 : 이 내가 가진 무엇인가?

+5

'정말 길고 불필요한 expressions'을 시도 할 수 있습니다. 이것에 대해 생각하기 시작하려면 [here] (http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-anemail-address)를보십시오. –

+0

이 표현식에는 "불필요한"것이 없습니다. 실제로는 정반대입니다 : 로컬 부분은 '@'를 포함해서는 안됩니다. 최상위 도메인은 적어도 두 글자로 구성되어야합니다. 당신은 더 복잡한 regexp_like로 끝날 것입니다. 아마도 제약 조건 대신 트리거를 선호하기 때문에 PL/SQL을 사용하여 문자열을 검사하고 전자 메일 주소에 대한 규칙을 확인하지 않을 때 예외를 발생시킬 수 있습니다. –

+0

당신의 체크 제약 조건은 '@@ ...'이 분명히 그렇지 않은 유효한 이메일 주소라고 생각합니다. –

답변

1

당신은 이메일 정규 표현식에를 통해 대부분은이보다 더 복잡 이상 더 _much_이다이

email varchar2(255) check (
email LIKE '%@%.%' AND email NOT LIKE '@%' AND email NOT LIKE '%@%@%' ) 
+1

스택 오버플로에 오신 것을 환영합니다! 질문에 대답하기 전에 항상 기존 답변을 읽으십시오. 이 답변은 이미 제공되었습니다. 실제로 OP는보다 간단한 해결책을 모색합니다. 좋은 답변을 작성하기위한 몇 가지 지침은 [여기] (https://stackoverflow.com/help/how-to-answer)에서 찾을 수 있습니다. – dferenc