Fórum Query não ordena corretamente por nome #331694
21/10/2006
0
Vagner.oliveira
Curtir tópico
+ 0Posts
21/10/2006
Motta
ex : P/ Oracle
SELECT NOME,CODIGO FROM CLIENTES ORDER BY UPPER(NOME),CODIGO
esta function UPPER converte tudo para maiusculo (aqui somente na ordenação), não sei se funciona em qq bd, creio que não
Gostei + 0
23/10/2006
Vagner.oliveira
Select * From Pecas where upper (Descricao) = Descricao Order By Descricao;
Gostei + 0
23/10/2006
Motta
From Pecas
Order By upper (Descricao)
tente assim
Gostei + 0
27/10/2006
Vagner.oliveira
Tentei o que me passou só que da erro.
Fiz assim
Select upper (NomeClientes), NomeClientes, OrdemNumero, Fone, Celular, Indice From OsStatus Order By NomeClientes
E ele está ordenando primeiro os maiúsculos, depois ele ordena os minúsculos.
Gostei + 0
27/10/2006
Motta
Select upper (NomeClientes), NomeClientes, OrdemNumero, Fone, Celular, Indice
From OsStatus
Order By 1
Gostei + 0
27/10/2006
Rinez
Se for Firebird pode ser o DEFAULT CHARACTER SET da criação do Banco, ou ainda o Dialect 1, 2, ou 3. Problema de letras com acento ou cedilha.
Gostei + 0
27/10/2006
Denis
Olha... é uma gambiarra... mas pode fazer assim. Crie uma view com a conversão para maiusculo.
Create view vwClientes (
NOMEMAIUSCULO,
NOME,
CODIGO) as
SELECT Upper(NOME),NOME,CODIGO
FROM CLIENTES
Depois faça um select na View ordernando pelo campo NOMEMAIUSCULO.
select * from vwcliente order by NOMEMAISCULO.
Assim a ordem vai ficar certinha. Note que vc pode exibir o outro campo nome para aparecer como foi digitado.
Mas aconselho que já converta para maiusculo quando for gravar os dados. Claro que tudo depende de sua aplicação.
Gostei + 0
27/10/2006
Denis
Olha... é uma gambiarra... mas pode fazer assim. Crie uma view com a conversão para maiusculo.
Create view vwClientes (
NOMEMAIUSCULO,
NOME,
CODIGO) as
SELECT Upper(NOME),NOME,CODIGO
FROM CLIENTES
Depois faça um select na View ordernando pelo campo NOMEMAIUSCULO.
select * from vwcliente order by NOMEMAISCULO.
Assim a ordem vai ficar certinha. Note que vc pode exibir o outro campo nome para aparecer como foi digitado.
Mas aconselho que já converta para maiusculo quando for gravar os dados. Claro que tudo depende de sua aplicação.
Gostei + 0
28/10/2006
Martins
SELECT cod_id, upper(Nome)NOMES, Apelido from clientes Order by Upper(Nome)
SELECT cod_id, upper(Nome)NOMES, Apelido from clientes Order by Nome
Boa sorte!
Gostei + 0
28/10/2006
Marco Salles
Acho pertinente a colocação .. Na realidade não se trata de um erro na query , conforme fora colocado pelo Wagner , mas sim caracteristicas especificas do proprio banco.. Dentre as colocaçoes a possibilidade de alterar na criaçao do banco conforme sugerido pelo Zenir ou utilizar a função Upper , conforme fora colocado pelo martins e também pelo motta.. As duas me parecem iguias
[b:50a9ca2a21]citação de motta[/b:50a9ca2a21]
[b:50a9ca2a21]citação de martins[/b:50a9ca2a21]
Não vejo erro em nenhuma das duas.. Mas voce disse que :
[b:50a9ca2a21]Citação de Wagbner se referindo ao motta[/b:50a9ca2a21]
erro aonde ?? Qual o erro ??? Na compilação ?? Qual o banco que voce esta usando ??
Gostei + 0
28/10/2006
Rinez
Mais qualquer coisa estamos aí para trocarmos idéia.
Abraços Zenir CTBA.
Gostei + 0
29/10/2006
Martins
IbCli.Close; IbCli.SQL.Text:=´SELECT COD_ID, UPPER( NOME) NOME, APELIDO FROM CLIENTES ORDER BY NOME´; IbCli.Open;
Os banco no Ib/FB estão com Dialect 3 e Character Set = win1252 (lc_ctype=WIN1252).
Qualquer coisa estamos aqui para tentar ajudar.
Boa sorte!
Gostei + 0
31/10/2006
Vagner.oliveira
Sobre o erro fiz algumas alterações e não ocorreu mais, só que ele ordena os maiusculos primeiro, depois os minusculos:
EX:
CD-RW
CD-R
Cabo de rede
o código que uso é esse:
Select indice, marca, quantidade, custo, venda, upper (Descricao), Descricao From Pecas Order By Descricao
Gostei + 0
31/10/2006
Martins
Seu código postado foi:
Select indice, marca, quantidade, custo, venda, upper (Descricao), Descricao From Pecas Order By Descricao
Mudei para este:
Select indice, marca, quantidade, custo, venda, upper (Descricao) Descricao From Pecas Order By Descricao
vc estava especificando Descricao 2 vezes, então eu removi a virgula dando um Upper no campo Descricao e passando o mesmo nome como pseudonimo. Teste.
begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add( ´Select indice, marca, quantidade, custo, venda, upper (Descricao) Descricao´+ ´ From TabTeste Order By Descricao´ ); Query1.Open; end;
Boa sorte!! :wink:
Gostei + 0
09/11/2006
Vagner.oliveira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)