SE puoi modificare la tabella (supponendo che sia SQL Server 2005 e versioni successive), è possibile aggiungere una colonna calcolata alla tabella e mantenerla. Questa colonna potrebbe contenere una rappresentazione "ripulita" del tuo campo "numero di telefono".
Qualcosa del genere:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
e poi:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Ora, la tua colonna "CleanedPhone" conterrebbe sempre una versione "ripulita" del tuo numero di telefono, sempre qualcosa come:555123456.
Poiché si tratta di un campo PERSISTED, non incorrerai in una penalizzazione delle prestazioni durante la query:il valore viene creato e archiviato nella tabella ed è disponibile come una normale colonna.
Su questo, ora puoi interrogare abbastanza facilmente.
Marco