none
Inserir coluna tipo varchar em coluna int RRS feed

  • Pergunta

  • Olá boa tarde!!

     

    Como posso inserir dados de uma tabela em outra sendo que

    gostaria de passar uma coluna de uma tabela do tipo varchar para outra coluna de outra tabela mas do tipo int

     

    tentei inserir e ele emitiu a msg:

    Msg 248, Level 16, State 1, Line 1
    A conversão do valor varchar '00000000124542' estourou uma coluna de inteiros.

     

    Obrigado!!!

     

     

    quinta-feira, 28 de julho de 2011 18:31

Respostas

  • Brown, seu problema é outro: certamente existem valores na sua coluna que não são do tipo inteiro, logo, ao tentar convertê-la, o erro mencionado acontece.

    Exemplo:

    Select Convert(bigint, 'A000123')

    Msg 8114, Level 16, State 5, Line 1

    Error converting data type varchar to bigint. 

     

    Tente achar os registros que se encontram nesta situação, para que possa fazer os devidos acertos. A função IsNumeric poderá lhe ajudar:

    Select * From SuaTabela Where IsNumeric(SeuCampo) <> 1 


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:30
    quinta-feira, 28 de julho de 2011 21:44
  • Brown,

     

    Apenas se voce remover todos os caracteres não numericos, o que não creio que seja possivel pelo fato de alterar seus dados....


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCTS SQL Server 2008
    Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:31
    sexta-feira, 29 de julho de 2011 12:27
    Moderador
  • Brown,

    Aparentemente vc esta com 2 problemas inserindo valores que estoura o INT e tentativa de inserir texto em INT, bc não consegue inserir texto em númerico... o que vc pode fazer é inserir apenas os dados numéricos usando o IsNumeric (veja exemplo do Roberson)

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:31
    sexta-feira, 29 de julho de 2011 14:46
  • Tranquilo galera

    a unica forma mesmo é separa como Roberson tinha dito

    mesmo assim obrigado a todos ai pelas dicas

     

    Abraço

    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:41
    sexta-feira, 29 de julho de 2011 17:30

Todas as Respostas

  • Brown,

     

    No seu select da colna varchar, adicione isso:

    CAST(Campo AS INT)

     

    Os 0 as esquerda serao removidos.


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCTS SQL Server 2008 Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quinta-feira, 28 de julho de 2011 18:35
    Moderador
  • Brown

    acredito que o seu problema é outro... o varcahr para o int funciona, o SQL vai remover o 0 a esquerda.. o que pode esta ocorrendo é que vc esta tentando inserir algum valor acima do limite do dataytpe INT (2.147.483.647) ou (-2.147.483.647)

    declare @tbTeste table (campo int)
    declare @variavel varchar(15)
    Set @variavel ='01000000124542' --erro
    --set @variavel ='00000000124542' --funciona
    
    insert into @tbTeste values(@variavel)
    
    select * from @tbTeste
    


    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 28 de julho de 2011 18:39
  • tentei isso mais o erro continuou
    quinta-feira, 28 de julho de 2011 18:52
  • o q estou inserindo é de uma tabela de tipo varchar de tamanho 14 para uma de int
    quinta-feira, 28 de julho de 2011 18:56
  • então este é o seu problema....como ilustrei no exemplo acima

    vc vai ter que alterar o seu datatype para decimal(14) ou bigint

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 28 de julho de 2011 19:06
  • com bigint tbm deu erro

     

    Msg 8114, Level 16, State 5, Line 1
    Erro ao converter tipo de dados varchar em bigint.

    quinta-feira, 28 de julho de 2011 19:39
  • Brown, seu problema é outro: certamente existem valores na sua coluna que não são do tipo inteiro, logo, ao tentar convertê-la, o erro mencionado acontece.

    Exemplo:

    Select Convert(bigint, 'A000123')

    Msg 8114, Level 16, State 5, Line 1

    Error converting data type varchar to bigint. 

     

    Tente achar os registros que se encontram nesta situação, para que possa fazer os devidos acertos. A função IsNumeric poderá lhe ajudar:

    Select * From SuaTabela Where IsNumeric(SeuCampo) <> 1 


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:30
    quinta-feira, 28 de julho de 2011 21:44
  • realmente é isso mesmo

    existem registros que possuem o formato "012457890000AE"

     

    Existe alguma maneira de inserir estes dados em uma coluna de tipo int??

     

    Abraço

    sexta-feira, 29 de julho de 2011 12:18
  • Brown,

     

    Apenas se voce remover todos os caracteres não numericos, o que não creio que seja possivel pelo fato de alterar seus dados....


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCTS SQL Server 2008
    Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:31
    sexta-feira, 29 de julho de 2011 12:27
    Moderador
  • Brown,

    Aparentemente vc esta com 2 problemas inserindo valores que estoura o INT e tentativa de inserir texto em INT, bc não consegue inserir texto em númerico... o que vc pode fazer é inserir apenas os dados numéricos usando o IsNumeric (veja exemplo do Roberson)

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:31
    sexta-feira, 29 de julho de 2011 14:46
  • Tranquilo galera

    a unica forma mesmo é separa como Roberson tinha dito

    mesmo assim obrigado a todos ai pelas dicas

     

    Abraço

    • Marcado como Resposta Brown11 sexta-feira, 29 de julho de 2011 17:41
    sexta-feira, 29 de julho de 2011 17:30