2017-10-17 3 views
0

C'est une pratique facile, mais je suis un peu perplexe. Ma question est de savoir pourquoi l'EPAISSEUR n'apparaît pas dans l'ordre croissant.Oracle liste d'ordre par trois attributs, mais le troisième attribut de la table de résultat ne montre pas dans l'ordre

the practice

Ma commande:

select MATERIALID, MATERIALNAME, MATERIAL, MATERIALSTANDARDPRICE, THICKNESS 
from RAWMATERIAL_T 
where MATERIAL in ('Cherry','Pine','Walnut') 
order by MATERIAL, MATERIALSTANDARDPRICE, THICKNESS; 

part of the result table

+0

svp une [mcve] - définitions de table d'exemple et des données d'échantillons, le résultat escompté. THanks – OldProgrammer

+0

La requête est 100% correcte. Donc la réponse doit avoir quelque chose à voir avec votre configuration ... il n'est donc pas possible de répondre sans en savoir beaucoup plus à ce sujet. Par exemple: Je pourrais générer des résultats si le prix avait des décimales, mais dans SQL \ * Plus (ou tout ce que j'utilise pour interagir avec la base de données) j'ai utilisé la commande 'COLUMN MATERIALSTANDARDPRICE FORMAT 999' - alors le prix serait arrondi, il semblerait donc que l'ÉPAISSEUR ait besoin d'être le bris d'égalité, quand il n'y avait pas de cravate à briser. – mathguy

+1

EPAISSEUR est une chaîne de caractères, n'est ce pas? –

Répondre

0

Merci much.I a constaté que le type de données est varchar.

DataType

+0

Et cela signifie que vous comprenez pourquoi il trie comme il le fait? –

+0

Oui, merci beaucoup. Je pense que parce que le type est varchar, Oracle compare juste le premier chiffre. –

+0

Non, Oracle les compare en tant que chaînes de caractères, pas en tant que chiffres numériques. –