Como reescrever números de telefone em T-SQL?
-
03-07-2019 - |
Pergunta
Eu tenho uma pergunta iniciantes em T-SQL.
Nós importados planilhas do Excel em um SQL Server 2008. Pena que esses arquivos do Excel não foram formatados da maneira que deve ser. Queremos um número de telefone para ficar assim: '012345678', nenhum líder e espaços em branco e nenhum espaço em branco dentro. Pior ainda, por vezes, o número é codificado com um prefixo '0123-2349823' ou '0123/2349823'.
Normalmente eu iria exportar o arquivo Excel para um arquivo CSV , em seguida, lançar alguns mágica Perl script para fazer a limpeza e, em seguida, reimportar o arquivo Excel.
Ainda assim, seria interessante saber como fazer coisas como esta com T-SQL.
Todas as idéias?
Solução
Algo como
replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')
deve funcionar. não parece bonita. ;)
Outras dicas
eu iria sobre isso com uma atualização e usar o 'Substituir' e funções LTrim / RTrim para SQL.
Update Table1
set phonenum = Case
When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
Else LTrim(RTrim(Replace(phonenum, '/', '')))
End
"limpa" contém apenas o valor numérico
Dependendo se um número de telefone contém "-"., "/", Substituí-los com uma string vazia
create table #t ( tel varchar(30) )
insert #t select '0123-2349823'
insert #t select '0123/2349823'
select tel,
replace(tel,
case
when patindex('%-%', tel) > 0 then '-'
when patindex('%/%', tel) > 0 then '/'
end, '') as Cleaned
from #t