HVIS du kan ændre tabellen (forudsat at det er SQL Server 2005 og op), kan du tilføje en beregnet kolonne til din tabel og fortsætte med den. Denne kolonne kunne indeholde en "opryddet" repræsentation af dit "telefonnummer"-felt.
Noget som dette:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
og derefter:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Nu ville din "CleanedPhone"-kolonne altid indeholdt en "opryddet" version af dit telefonnummer - altid noget i stil med:555123456.
Da det er et PERSISTED-felt, pådrager du dig heller ikke en ydeevnestraf, når du forespørger - værdien oprettes og gemmes i din tabel og er tilgængelig som en normal kolonne.
På dette kunne du nu forespørge ganske let.
Marc