WENN Sie die Tabelle ändern können (vorausgesetzt, es handelt sich um SQL Server 2005 und höher), könnten Sie Ihrer Tabelle eine berechnete Spalte hinzufügen und diese beibehalten. Diese Spalte könnte eine "bereinigte" Darstellung Ihres Feldes "Telefonnummer" enthalten.
Etwa so:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
und dann:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Jetzt enthält Ihre Spalte "GesäubertesTelefon" immer eine "bereinigte" Version Ihrer Telefonnummer - immer so etwas wie:555123456.
Da es sich um ein PERSISTED-Feld handelt, entstehen Ihnen auch keine Leistungseinbußen beim Abfragen – der Wert wird in Ihrer Tabelle erstellt und gespeichert und steht als normale Spalte zur Verfügung.
Darauf könnten Sie nun ganz einfach abfragen.
Markus