Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL - Consultar números de telefone armazenados de forma inconsistente


SE você puder alterar a tabela (supondo que seja SQL Server 2005 e acima), você pode adicionar uma coluna computada à sua tabela e persisti-la. Esta coluna pode conter uma representação "limpa" do seu campo "número de telefone".

Algo assim:
 create function dbo.CleanPhone(@phone varchar(100))
 returns varchar(100)
 with schemabinding
 as begin
   return
     replace(replace(replace(replace(replace(replace(@phone, ' ', ''), 
             '-', ''), '(', ''), ')', ''), '-', ''), '+', '')
 end

e depois:
alter table (yourtable)
 add cleanedPhone as dbo.CleanPhone(Phone) persisted

Agora, sua coluna "CleanedPhone" sempre conteria uma versão "limpa" do seu número de telefone - sempre algo como:555123456.

Como é um campo PERSISTED, você também não incorre em penalidade de desempenho ao consultar - o valor é criado e armazenado em sua tabela e está disponível como uma coluna normal.

Sobre isso, agora você pode consultar com bastante facilidade.

Marco