ЕСЛИ вы можете изменить таблицу (при условии, что она SQL Server 2005 и выше), вы можете добавить вычисляемый столбец в таблицу и сохранить его. Этот столбец может содержать «очищенное» представление вашего поля «phonenumber».
Примерно так:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
и затем:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Теперь в вашем столбце «CleanedPhone» всегда будет «очищенная» версия номера вашего телефона - всегда что-то вроде: 555123456.
Так как это поле PERSISTED, при запросе вы не понесете потери производительности - значение создается и сохраняется в вашей таблице и доступно как обычный столбец.
Теперь вы можете легко запросить.
Марк