none
convert ajuda RRS feed

  • Pergunta

  • Olá

    Alguem poderia me ajudar, preciso saber se com o comando convert, eu consigo sair desses dois erros abaixo:

    Estou fazendo um select com varios campos.

    Msg 245, Level 16, State 1, Line 2

    Conversion failed when converting the varchar value '632.090.002.615-0' to data type int.

    Msg 248, Level 16, State 1, Line 2

    The conversion of the varchar value '6360100180403' overflowed an int column.

    Obrigado


    Segue o comando

    set

    dateformat dmy

    SELECT 

    DISTINCT

    dbo

    .tblWRITipoImovel.Descricao,

    dbo

    .tblWRILivro.Sigla,

    dbo

    .tblWRIReal.PK_Num_Livro,

    dbo

    .tblWRIAtos.DataAto,

    dbo

    .tblWRIAtosTitulos.FK_tblWRIRecepcaoRecepcao ,

    convert (datetime,dbo.tblWRIImovel.Incra,103),

    dbo

    .tblWRIImovel.IRF,

    dbo

    .tblWRIImovel.Denominacao

    FROM

    dbo.tblWRILivro INNER JOIN

    dbo

    .tblWRIAtosTitulos INNER JOIN

    dbo

    .tblWRIAtos INNER JOIN

    dbo

    .tblWRIReal ON dbo.tblWRIAtos.FK_tblWRIReal_Id = dbo.tblWRIReal.PK_Id INNER JOIN

    dbo

    .tblWRIImovel INNER JOIN

    dbo

    .tblWRITipoImovel ON dbo.tblWRIImovel.FK_tblWRITipoIMovel_Id = dbo.tblWRITipoImovel.PK_Id ON

    dbo

    .tblWRIReal.FK_tblWRIImovelBase_Id = dbo.tblWRIImovel.FK_tblWRIImovelBase_Id ON dbo.tblWRIAtosTitulos.FK_tblWRIAtos_Id = dbo.tblWRIAtos.PK_Id ON

    dbo

    .tblWRILivro.PK_Id = dbo.tblWRIReal.FK_tblWRILivro_Id

    WHERE

    (dbo.tblWRIAtos.DataAto >= CONVERT(DATETIME, '2012-01-06 00:00:00', 102))

    AND

    (dbo.tblWRIImovel.Incra > 0) OR

    (dbo.tblWRIAtos.DataAto >= CONVERT(DATETIME, '2012-01-06 00:00:00', 102)) AND (dbo.tblWRIImovel.FK_tblWRITipoIMovel_Id = 6 OR

    dbo

    .tblWRIImovel.FK_tblWRITipoIMovel_Id = 7 OR

    dbo

    .tblWRIImovel.FK_tblWRITipoIMovel_Id = 15 OR

    dbo

    .tblWRIImovel.FK_tblWRITipoIMovel_Id = 23 OR

    dbo

    .tblWRIImovel.FK_tblWRITipoIMovel_Id = 30 OR

    dbo

    .tblWRIImovel.FK_tblWRITipoIMovel_Id = 32 OR

    dbo

    .tblWRIImovel.FK_tblWRITipoIMovel_Id = 67)

    ORDER

    BY dbo.tblWRIAtos.DataAto, dbo.tblWRIAtosTitulos.FK_tblWRIRecepcaoRecepcao

    • Editado Eduardo_soncim quarta-feira, 27 de junho de 2012 19:49 acres
    • Tipo Alterado Heloisa Pires segunda-feira, 2 de julho de 2012 12:33 é uma pergunta
    quarta-feira, 27 de junho de 2012 19:40

Respostas

  • Olá Eduardo,

    Acredito que o problema esta no where

    troque a linha

    dbo.tblWRIImovel.Incra > 0
    
    --por
    
    LEN(dbo.tblWRIImovel.Incra) > 0


    Att.
    Lukas Baldan

    • Marcado como Resposta Heloisa Pires segunda-feira, 2 de julho de 2012 12:34
    quarta-feira, 27 de junho de 2012 20:38
  • Eduardo,

    Caso a sujestão do Lukas tenha ajudado/solucionado seu problema, marque-a como resposta para que os demais membros do forum se beneficiem da solução.

    At.

    rafael

    • Marcado como Resposta Eduardo_soncim quinta-feira, 5 de julho de 2012 12:05
    quinta-feira, 28 de junho de 2012 13:51

Todas as Respostas

  • Boa tarde Eduardo.

    O Primeiro erro é pq vc está tentado converter uma string com pontos (.) e dash (-) para o tipo inteiro. Mesmo se não tivesses os pontos nem o traço/dash daria um erro porque o tipo inteiro suporta até 32.767 (se nao estou enganado). Voce devería executar um convert retirando esses caracteres para um tipo de dados BIGINT.

    O segundo erro é porque o tipo nao suporta aquele tamanho, assim como no primeiro erro (ultrapassa os 32.767).

    At.
    Rafael

    quarta-feira, 27 de junho de 2012 19:55
  • Esse número "632.090.002.615-0" é o que? Qual é a coluna que representa ele? 

    Abraços!


    Thiago Coelho
    thiagocoelho.net
    @thiagokoelho

    quarta-feira, 27 de junho de 2012 19:56
  • Olá tiago é essa dbo.tblWRIImovel.Incra

    quarta-feira, 27 de junho de 2012 19:57
  • como faco isso?
    quarta-feira, 27 de junho de 2012 20:08
  • Eduardo, o dbo.tblWRIImovel.Incra é uma data?

    convert (datetime,dbo.tblWRIImovel.Incra,103),

    RAfael


    quarta-feira, 27 de junho de 2012 20:12
  • Nao no campo incra estao justamente numeros iguais a estes:

    632.090.002.615-0

    quarta-feira, 27 de junho de 2012 20:17
  • Entao pq voce está tentando converter ele para datetime.

    seu select:

    convert (datetime,dbo.tblWRIImovel.Incra,103),

    At.
    rafael

    quarta-feira, 27 de junho de 2012 20:30
  • eu fiz errado, na verdade colocando apenas assim:

    dbo.tblwriimovel.incra, tambem da o erro

    quarta-feira, 27 de junho de 2012 20:31
  • Se voce comentar ele, para de dar o erro?

    Pq parece que o erro nao está no seu Select...

    Pode ser aqui nessa linha :      (dbo.tblWRIImovel.Incra > 0) OR

    Veja que aqui voce está tentando comparar um varchar com inteiro, no caso o zero... Talvez se a intenção for testar se o campo está vazio ou não, voce pode usar assim:

    (ISNULL(dbo.tblWRIImovel.Incra,'') <> '') OR

    Rafael

    quarta-feira, 27 de junho de 2012 20:36
  • Olá Eduardo,

    Acredito que o problema esta no where

    troque a linha

    dbo.tblWRIImovel.Incra > 0
    
    --por
    
    LEN(dbo.tblWRIImovel.Incra) > 0


    Att.
    Lukas Baldan

    • Marcado como Resposta Heloisa Pires segunda-feira, 2 de julho de 2012 12:34
    quarta-feira, 27 de junho de 2012 20:38
  • Lukas, muito obrigado cara,

    Obrigado mesmo, é isso mesmo, funcionou.

    Importante ajuda que voce me deu e todos do forum.

    quarta-feira, 27 de junho de 2012 20:42
  • Eduardo,

    Caso a sujestão do Lukas tenha ajudado/solucionado seu problema, marque-a como resposta para que os demais membros do forum se beneficiem da solução.

    At.

    rafael

    • Marcado como Resposta Eduardo_soncim quinta-feira, 5 de julho de 2012 12:05
    quinta-feira, 28 de junho de 2012 13:51