私はまともで論理的なCHECK
という制約を探して、電子メールが正しい形式であることを検証しました。以下のようなこれまでのところ私が見つけた本当に長いと、不要な表現:Oracleデータベース内の電子メールの制約を確認してください
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]%_._%')
誰かが、これは電子メールを検証する最も効率的な方法であるなら、私に教えてくださいことはできますか?
'本当に長いと、不要なexpressions'を試すことができますが、これよりももっと複雑_much_長くなっていると。これについて考え始めるには、[こちら](http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-anemail-address)を見てください。 –
私はこれらの表現に「不要」というものは何も見当たりません。実際には正反対です:ローカル部分には「@」は含まれてはいけません。最上位ドメインは少なくとも2文字で構成されていなければなりません。あなたはより複雑なregexp_likeで終わるでしょう。 PL/SQLを使用して文字列をチェックし、電子メール・アドレスのルールを確認しない場合に例外を発生させるために、制約の代わりにトリガーを使用することをお勧めします。 –
あなたのチェック制約は '@@ ...'が明らかに有効ではない有効な電子メールアドレスであるとみなします。 –