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:
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');
Agora quando eu efetuo o seguinte select:
Select * from tb_teste order by teste_cod
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:
Select * from tb_teste WHERE teste_cod > 'E1' order by teste_cod
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:
Select * from tb_teste WHERE teste_cod < 'E1' order by teste_cod
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.
Pergunta
Alexandre_ABS
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:
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');
Agora quando eu efetuo o seguinte select:
Select * from tb_teste order by teste_cod
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:
Select * from tb_teste WHERE teste_cod > 'E1' order by teste_cod
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:
Select * from tb_teste WHERE teste_cod < 'E1' order by teste_cod
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.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.