Usuário com melhor resposta
Alterar valores de uma coluna em lote

Pergunta
-
Pessoal,
O problema é o seguinte:
Fiz a migração de um sistema para outro e trouxe todo o cadastro de clientes do sistema antigo.
Infelizmente o rapaz que fez esta parte, migrou o campo CPF sem formatar o campo como Texto no Excel (Os dados passaram pelo Excel), assim todos os CPF's que começam com ZERO ficaram sem o mesmo!
Um verdadeiro absurdo!
Como posso corrigir este problema direto no SQL, sem ter que migrar novamente o cadastro, pois o sistema já está em operação.
Ou seja, Inserir o zero na frente destes CPF's.
Já tenho a relação dos cpf's que estão com problema... sao mais de 61.000... (Impossivel fazer na mão!)
Agradeço desde já pessoal!
Respostas
-
Deleted
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:17
-
Se seu campo for um VARCHAR e seu CPF não tiver máscara, você pode adicionar o zero a frente sem problemas.
UPDATE TabelaPessoa SET cpf = '0' + cpf WHERE LEN(cpf) < 11
Douglas,
A opção do Demetrius vai atender "quase" a totalidade de sua necessidade. Eu apenas acrescentaria um método REPLICATE para casos que o CPF tenha mais zeros no início ou se você precisa manter um padrão para pessoa física ou jurídica (com 14 caracteres).
Segue o exemplo indicado pelo Demetrius, complementado com o REPLICATE:
DECLARE @CPF varchar(11) = '123456789' SELECT REPLICATE('0', 11-LEN(@CPF)) + @CPF SET @CPF = '1234567890' SELECT REPLICATE('0', 11-LEN(@CPF)) + @CPF GO
Para maiores informações veja:
http://msdn.microsoft.com/pt-br/library/ms174383.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:17
-
Douglas,
Primeiro verifique se o campo CPF da sua tabela é varchar....
Segue um exemplo...
create table #teste (cpf varchar(11)); go insert #teste (cpf) values ('6464646464'); insert #teste (cpf) values ('64646464649'); go select * from #teste update #teste set cpf = right('0'+CPF,11) select * from #teste
Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote
- Sugerido como Resposta Mr. GMSOFT quinta-feira, 6 de novembro de 2014 16:54
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
-
Se seu campo for um VARCHAR e seu CPF não tiver máscara, você pode adicionar o zero a frente sem problemas.
UPDATE TabelaPessoa SET cpf = '0' + cpf WHERE LEN(cpf) < 11
- Sugerido como Resposta Durval RamosModerator quinta-feira, 6 de novembro de 2014 17:10
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
Todas as Respostas
-
Douglas,
Primeiro verifique se o campo CPF da sua tabela é varchar....
Segue um exemplo...
create table #teste (cpf varchar(11)); go insert #teste (cpf) values ('6464646464'); insert #teste (cpf) values ('64646464649'); go select * from #teste update #teste set cpf = right('0'+CPF,11) select * from #teste
Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote
- Sugerido como Resposta Mr. GMSOFT quinta-feira, 6 de novembro de 2014 16:54
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
-
Se seu campo for um VARCHAR e seu CPF não tiver máscara, você pode adicionar o zero a frente sem problemas.
UPDATE TabelaPessoa SET cpf = '0' + cpf WHERE LEN(cpf) < 11
- Sugerido como Resposta Durval RamosModerator quinta-feira, 6 de novembro de 2014 17:10
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
-
-
Se seu campo for um VARCHAR e seu CPF não tiver máscara, você pode adicionar o zero a frente sem problemas.
UPDATE TabelaPessoa SET cpf = '0' + cpf WHERE LEN(cpf) < 11
Douglas,
A opção do Demetrius vai atender "quase" a totalidade de sua necessidade. Eu apenas acrescentaria um método REPLICATE para casos que o CPF tenha mais zeros no início ou se você precisa manter um padrão para pessoa física ou jurídica (com 14 caracteres).
Segue o exemplo indicado pelo Demetrius, complementado com o REPLICATE:
DECLARE @CPF varchar(11) = '123456789' SELECT REPLICATE('0', 11-LEN(@CPF)) + @CPF SET @CPF = '1234567890' SELECT REPLICATE('0', 11-LEN(@CPF)) + @CPF GO
Para maiores informações veja:
http://msdn.microsoft.com/pt-br/library/ms174383.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:17
-
Deleted
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:16
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 6 de novembro de 2014 18:17
-
Pessoal,
Verifiquei aqui que a coluna é um 'Varchar'
e os dados são incluídos sem separadores.
Vou efetuar os testes em uma base de homolog (afinal são muitos registros e der algum problema vai ser complicado) e assim que tiver o resultado retorno aqui
-
-