none
Query RRS feed

  • Pergunta

  • Ola, Pessoal, Tenho uma tabela "Veiculo" onde existe um campo placa, preciso gerar um relatorio de todos os veiculos pro final de placa. Exemplo:

    AAA0001
    BBB0002
    CCC0003
    DDD0004

    Detalhe o campo tem 7 posições alfa, mas verifiquei que existem placas sem as 7 posições preenchidas. Exemplo:

    EE0005
    FF0006

    Como fazer uma query que me traga estes dados ordenados por final de placa.

    quinta-feira, 8 de março de 2007 17:22

Respostas

  • Maricelmo,

    Este erro esta informando que a conversão não pode conversar caracteres em números.

    Veja este exemplo:

    Create Table #Placas

    (Codigo VarChar(7))

     

    Insert into #placas values('AAA0001')

    Insert into #placas values('BBB0002')

    Insert into #placas values('CCC000')

    Insert into #placas values('DDD0004')

    Insert into #placas values('EE0005')

    Insert into #placas values('FF0006')

     

    Select Codigo As Placa,

    Case Len(Codigo)

    When 6 Then SubString(codigo,6,1)

    When 7 Then SubString(Codigo,7,1)

    End As 'Final da Placa',

    Len(Codigo) As 'Tamanho da Placa'

    From #Placas

    sexta-feira, 9 de março de 2007 12:39

Todas as Respostas

  • Boa tarde Maricelmo

     

     

    Você pode utilizar a função SUBSTRING para fazer e filtro e tb para dar o Order by

     

    -- Retorna os veículos com placa de final 7

    Select Placa from Veiculos Where SubString(Placa,Len(RTrim(Placa)),1) = 7

     

     

     

     

     

    Espero ter ajudado

    quinta-feira, 8 de março de 2007 21:01
  •  

     select * from tabela order by convert(int,right(placa,1))

    sexta-feira, 9 de março de 2007 10:20
  • Srs, muito obrigado pela ajuda, mas infelizmente não deu certo!. Gerando este erro:

    Syntax error converting the varchar value 'A' to a column of data type int.
    sexta-feira, 9 de março de 2007 12:05
  • Detalhe, este erro apareceu nos dois casos..
    sexta-feira, 9 de março de 2007 12:06
  • tenta com esse

     


    select * from tabela order by case when isnumeric(right(rtrim(placa),1)) = 1 Then convert(int,right(rrim(placa),1)) else 0 End

     

    Abs;

    sexta-feira, 9 de março de 2007 12:38
  • Maricelmo,

    Este erro esta informando que a conversão não pode conversar caracteres em números.

    Veja este exemplo:

    Create Table #Placas

    (Codigo VarChar(7))

     

    Insert into #placas values('AAA0001')

    Insert into #placas values('BBB0002')

    Insert into #placas values('CCC000')

    Insert into #placas values('DDD0004')

    Insert into #placas values('EE0005')

    Insert into #placas values('FF0006')

     

    Select Codigo As Placa,

    Case Len(Codigo)

    When 6 Then SubString(codigo,6,1)

    When 7 Then SubString(Codigo,7,1)

    End As 'Final da Placa',

    Len(Codigo) As 'Tamanho da Placa'

    From #Placas

    sexta-feira, 9 de março de 2007 12:39
  • Bom dia faz o seguinte, dá uma alterada no código para o exemplo abaixo. Qualquer coisa retorne.

    Não testei mas creio que deva funcionar.

     

    Select Placa from Veiculos Where Cast(SubString(Placa,Len(RTrim(Placa)),1) as int) = 7

     

     

     

     

     

    Esepro ter ajudado

    sexta-feira, 9 de março de 2007 12:47
  • Valeu Junior Galvão, Funcionou Direitinho, Muito Obrigado!!!
    sexta-feira, 9 de março de 2007 13:26
  • Maricelmo,

    Obrigado.

    sexta-feira, 9 de março de 2007 14:20