Ordenação Oracle
01/04/2010
0
Boa tarde a todos,
Estou com uma duvida no funcionamento do order by do oracle. Quando existem colunas em uma tabela e essa coluna varchar2 recebe um "numero" o Oracle "se perde" no order by. Por exemplo:
Tenho a seguinte tabela:
Agora quando eu efetuo o seguinte select:
me traz o seguinte resutado:
teste_cod teste_descr
----------------------------------
A1 A
B1 B
C1 C
D1 D
E1 E
G1 G
H1 H
3F F
Até aqui tudo bem, pelo que eu entendi ele interpreta que numeros são maiores que letras.
No entanto quando eu faço o select desta forma:
me traz o resutado assim:
teste_cod teste_descr
----------------------------------
G1 G
H1 H
Ou seja, com o where ele interpreta que numeros são MENORES que letras ????
Quando eu inverto o sinal de maior para menor, veja:
teste_cod teste_descr
----------------------------------
A1 A
B1 B
C1 C
D1 D
3F F
Não entendo por que isso acontece, talvez seja alguma coisa errada no meu select.
É a primeira vez que utilizo o Oracle, então peço a ajuda de voçês neste problema.
CREATE TABLE tb_teste( teste_cod varchar2(25) NOT NULL, teste_descr varchar2(50) NOT NULL, constraint PK_teste PRIMARY KEY (teste_cod) ) ; insert into tb_teste values('A1','A'); insert into tb_teste values('B1','B'); insert into tb_teste values('C1','C'); insert into tb_teste values('D1','D'); insert into tb_teste values('E1','E'); INSERT INTO TB_TESTE VALUES('3F','F'); insert into tb_teste values('G1','G'); insert into tb_teste values('H1','H');
Select * from tb_teste order by teste_cod
Select * from tb_teste WHERE teste_cod > 'E1' order by teste_cod
Select * from tb_teste WHERE teste_cod < 'E1' order by teste_cod
Alexandre Silva
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)