2012-01-14 8 views

答えて

4

あなたは検証のこの種は、アプリケーションコードではなく、中に行われるべきで、正規表現パターンに対してテストする

CHECK(emailfield SIMILAR TO '[[:ALNUM:]._%+-][email protected][[:ALNUM:].-]+\.[[:ALPHA:]]+') 
+0

非常に近いですが、foo @ bar..comも一致しますが、有効なメールアドレスではありません。 foo。@ bar.comも無効で、まだ一致しています。 –

+0

はい、私が与えたパターンは完璧ではないでしょう。おそらく、「何かのようなもの」よりもはっきりと綴っていたはずです。完璧なパターンはあまりにも複雑すぎてここには載せられません。基本的な考え方を示したかっただけです。 – ain

+0

電子メールアドレスの唯一の真の妥当性確認は確認メッセージを送信しています:)私は通常、完全に有効な電子メールアドレスが拒否されたときに怒っています。 –

3

私見のようなものをSIMILAR TO演算子を使用することができますデータベース。とにかく、正規表現による提案のアプローチは素晴らしいようです!

+1

ありがとう、私は別の場所で見つけたアドバイスに従って、例外的なケースで問題を避けるために電子メールアドレスの基本的な要素をチェックするしかなかったので、 '_%@_%._%'のようにVALUEを使用します。 –

+0

+1ユーザー入力はビジネスアプリケーションロジックによって検証される必要があります。データベースはデータのみを管理し、ビジネスロジックを適用する必要があります。データベースを「データバリデーター」として使用するのは良いことではありません。 – morde

+0

検証は両方の場所にある必要があります。あなたのDB(太いデータベースのコンセプト)を保護するためのデータベースと、ビジネスロジックの優れたユーザーエクスペリエンス – Julian50

関連する問題