SI vous pouvez modifier la table (en supposant qu'il s'agit de SQL Server 2005 et plus), vous pouvez ajouter une colonne calculée à votre table et la conserver. Cette colonne peut contenir une représentation "nettoyée" de votre champ "numéro de téléphone".
Quelque chose comme ça :
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
puis :
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Maintenant, votre colonne "CleanedPhone" contiendrait toujours une version "nettoyée" de votre numéro de téléphone - toujours quelque chose comme :555123456.
Puisqu'il s'agit d'un champ PERSISTED, vous n'encourez pas non plus de pénalité de performances lors de l'interrogation - la valeur est créée et stockée dans votre table, et est disponible en tant que colonne normale.
À ce sujet, vous pouvez maintenant interroger assez facilement.
Marc