Ir para conteúdo
Fórum Script Brasil
  • 0

Inserir zeros a Esquerda - SQL Server 2005 possibilidades? (Resolvido)


BStar

Pergunta

Olá pessoal...

Bom... Estou com um problemão aqui e quero contar com a ajuda de vocês:

Eu tenho uma planilha .xls que possui um campo chamado CPF;

Esse campo possui 15.000 registros e eu vou importá-los para o SQL Server 2005, até ai tudo bem;

O problema é que alguns cpf's possuem '0' (zeros) na frente (Esquerda) nessa planilha ex: 000123456700 e, quando tento importar

para o SQL Sever, ele some com os zeros da frente ficando assim: 123456700.

(ahh preciso saber também se o tipo do campo criado no sql server pode afetar em algo na hora da importação)

Isso pode variar, tipo, tem horas que as 4 primeiras "casas" do campo CPF contém zeros (000012345600), tem horas que só as 3 "casas" (000123456700),

tem horas que 2 ou 1 casa possui zero na frente.

A minha idéia era fazer um insert + loop + if e ir inserindo 0 (zeros) a direita conforme a necessidade (sempre serão nestes 4 casos).

Mas como sou novo no SQL Server, gostaria de uma ajuda...

O meu muito obrigado por enquanto.

Editado por BStar
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Amigo.

Este problema está ocorrendo porque o campo criado no SQL é numérico. Sendo assim, os zeros a esquerda são suprimidos. Mesmo você fazendo um loop pra inserir os zeros, não conseguirá.

você terá q alterar o campo de numérico para caracter. Asism resolverá seu problema na migração mesmo, onde os zeros a esquerda não serão mais suprimidos.

Caso tenha alguma duvida ou problema, posta aí!!!

Espero ter ajudado.... :.)

Link para o comentário
Compartilhar em outros sites

  • 0

Opa fulvio, obrigado pela rápida resposta.

Então... Segundo a sua sugestão, eu criei um campo do tipo String (VARCHAR(14))... Mas acontece que quando efetuo os Inserts, ele insere normalmente mas adiciona uns caracteres estranhos... Um exemplo: no Excel está 00001106120 e quando eu faço o insert, ele insere assim: 1.10612e+006 :(

Será que tem como resolver?

Mais uma vez obrigado!

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá kandrade...

Então... eu estou pegando direto da planilha Excel, to abrindo ela e fazendo o insert direto.

Aqui eu abro a planilha:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

       'Excel 8.0;DATABASE=C:\bancos\cpf.xls',

 'SELECT CPF FROM [plan1$]');
Depois crio a tabela:
CREATE TABLE TB_CPF
(
   CPF VARCHAR (100)
);
Depois faço o Insert:
INSERT INTO TB_CPF

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

       'Excel 8.0;DATABASE=C:\bancos\cpf.xls',

 'SELECT CPF FROM [plan1$]');

E, quando faço o Select da TB_CPF, aparace desse jeito:

cpf.png

Alguma sugestão?

Obrigado mais uma vez.

(ps: OPENROWSET é usado para abria uma planilha em excel como se fosse um banco de dados mesmo)

(ps2: Já tentei diminuir o tamanho do campo mas acontece a mesma coisa :()

Editado por BStar
Link para o comentário
Compartilhar em outros sites

  • 0

Os caracteres estranhos que estão aparecendo são notações científicas.

você está com o SQL 2005, não é? Já tentou utilizar o "SQL Business Intelligence Development Studio" para fazer a importação dos dados?

Na planilha do excel, tem apenas dados de CPF? Caso positivo, você pode copiar os dados e colar em um TXT, e tentar realizar a importação novamente...

Se tiver alguma dúvida, estarei on no MSN a tarde... daasabh@hotmail.com

Link para o comentário
Compartilhar em outros sites

  • 0

No arquivo que está exportando faça o seguinte:

- Clique com o botão direito em cima da coluna. Ex: coluna A;

- Clique em formatar celulas;

- Ajuste o formato para "Texto";

- Salve a planilha e tente novamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal, boa tarde...

Então.. consegui resolver da seguinte maneira:

CREATE TABLE CPF
(CPF_1 VARCHAR (11))

INSERT INTO CPF
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;DATABASE=C:\bancos\cpf.xls', 'SELECT CPF FROM [cpf$]')


CREATE TABLE CPF_CONVERTIDO
(CP_CPF_CONVERTIDO VARCHAR (11))


INSERT INTO CPF_CONVERTIDO
SELECT REPLICATE ( '0' ,11 - LEN(CPF_1) )  + CPF_1 FROM CPF

Criei uma tabela (cpf);

Abri a planilha excel já inserindo o campo que eu queria da planilha na minha tabela;

Criei outra tabela (cpf_convertido);

Depois usei o Replicate e "disse" para adicionar '0' até que se complete o tamanho de 11 dígitos no campo cp_cpf_convertido.

Muito bom mesmo... Mais uma vez obrigado a todos que me ajudaram!

Abraço!

Editado por BStar
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...