POKUD můžete tabulku změnit (za předpokladu, že se jedná o SQL Server 2005 a nahoru), můžete do tabulky přidat vypočítaný sloupec a zachovat jej. Tento sloupec může obsahovat „vyčištěnou“ reprezentaci vašeho pole „telefonní číslo“.
Něco takového:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
a poté:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Nyní by váš sloupec „Vyčištěný telefon“ vždy obsahoval „vyčištěnou“ verzi vašeho telefonního čísla – vždy něco jako:555123456.
Vzhledem k tomu, že se jedná o pole PERSISTED, nedochází k žádnému snížení výkonu při dotazování – hodnota je vytvořena a uložena ve vaší tabulce a je dostupná jako běžný sloupec.
Na to se nyní můžete dotazovat celkem snadno.
Marc