JEŚLI możesz zmienić tabelę (zakładając, że jest to SQL Server 2005 i wyżej), możesz dodać do tabeli kolumnę obliczeniową i utrwalić ją. Ta kolumna może zawierać „wyczyszczoną” reprezentację pola „numer telefonu”.
Coś takiego:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
a następnie:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Teraz kolumna „Wyczyszczony telefon” zawsze zawierała „oczyszczoną” wersję Twojego numeru telefonu – zawsze coś w stylu:555123456.
Ponieważ jest to pole PERSISTED, również nie ponosisz spadku wydajności podczas wykonywania zapytania — wartość jest tworzona i przechowywana w tabeli i jest dostępna jako zwykła kolumna.
Dzięki temu możesz teraz dość łatwo zadawać zapytania.
Marek