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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top