TSQL メール検証 (正規表現なし) 質問する

TSQL メール検証 (正規表現なし) 質問する

電子メール アドレスを検証するための正規表現は数多くありますが、Sql Server 2005 の TSQL クエリに統合できる基本的な電子メール検証はどうでしょうか。

CLR プロシージャや関数は使いたくありません。単純な TSQL だけです。

すでにこれに取り組んだ人はいますか?

ベストアンサー1

とても基本は次のようになります:

SELECT
  EmailAddress, 
  CASE WHEN EmailAddress LIKE '%_@_%_.__%' 
            AND EmailAddress NOT LIKE '%[any obviously invalid characters]%' 
  THEN 'Could be' 
  ELSE 'Nope' 
  END Validates
FROM 
  Table

これは、中央に @ があり、その前に少なくとも 1 つの文字があり、その後に少なくとも 2 つの文字、ドット、および少なくとも 2 つの TLD が続くすべてのものと一致します。

より具体的なことを行うパターンをさらに記述することはできますLIKEが、電子メール アドレスである可能性のあるものすべてに一致させながら、そうでないものを見逃さないようにすることは決してできません。正規表現を使用しても、これを正しく行うことは困難です。さらに、RFC の文字どおりに一致させても、ほとんどの電子メール システムで受け入れられない/使用されないアドレス構造に一致します。

これをデータベース レベルで実行するのはおそらく間違ったアプローチなので、パフォーマンスの面では、上記で示した基本的な健全性チェックが最善の方法である可能性があり、アプリケーションで実行することで、はるかに高い柔軟性が得られます。

おすすめ記事