セミコロンで区切られた電子メールドメインを含むテーブルがあります。LIKEを使用するのではなく、よりクリーンな実装
Domain
------
gmail.com;googlemail.com
hotmail.com;hotmail.co.uk;live.co.uk
私は現在、以下のSQLを実行しています:
SELECT [Id]
FROM [DomainGroup]
WHERE [Domain] LIKE '%' + (SELECT RIGHT('[email protected]', CHARINDEX('@', REVERSE('[email protected]')) - 1)) + '%'
これが働いているが、私は多分PATINDEX
を使用すると、パフォーマンスと読みやすさの両方から、より良いだろうと考えていました。電子メールアドレスは実際には変数ですが、達成しようとしていることを示すために入力しました。
理由だけではなく、別のテーブルに列を正規化しませんか?あなたの現在のようなアプローチでは、あなたの実装には大したことではないかもしれないが、指摘する価値のある 'hotmail.com'を' neil @ hotmail.co'に受け入れると言うでしょう。 – Seph