OM du kan ändra tabellen (förutsatt att det är SQL Server 2005 och uppåt), kan du lägga till en beräknad kolumn i din tabell och bevara den. Den här kolumnen kan innehålla en "rensad" representation av ditt "telefonnummer"-fält.
Något så här:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
och sedan:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Nu skulle kolumnen "CleanedPhone" alltid innehålla en "rensad" version av ditt telefonnummer - alltid något i stil med:555123456.
Eftersom det är ett PERSISTED-fält drar du inte heller någon prestationsstraff när du frågar - värdet skapas och lagras i din tabell och är tillgängligt som en normal kolumn.
Om detta kan du nu fråga ganska enkelt.
Marc