テーブルを変更できる場合 (SQL Server 2005 であると仮定) 以上)、テーブルに計算列を追加して永続化することができます。この列には、「電話番号」フィールドの「クリーンアップ」表現を保持できます。
このようなもの:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
次に:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
これで、"CleanedPhone" 列には常に電話番号の "クリーンアップ" バージョンが含まれていました。常に 555123456 のようになります。
これは PERSISTED フィールドであるため、クエリを実行してもパフォーマンスが低下することはありません。値が作成されてテーブルに格納され、通常の列として使用できます。
これで、非常に簡単にクエリを実行できるようになりました。
マーク