Eine SQL-Anweisung wie
%Vor%ergibt
%Vor%Nach dem Auskommentieren der WHERE-Einschränkung ist das Ergebnis
%Vor% Ich hätte erwartet, dass das Ergebnis nur 978123456789
ist, da B002AACD0A
vor 000000000000
zurückgegeben wird, wenn die Abfrage ohne Einschränkung ausgeführt wird.
Wie kann dieses Verhalten erklärt werden? Und wie soll ich Varchare sortieren und vergleichen, damit sie zusammen arbeiten können, wie ich es mit ganzen Zahlen machen kann?
BEARBEITEN : Lustig genug, wenn die Einschränkung auf x>'B002AACD0A'
geändert wird, ist das Ergebnis leer. Wenn Sie es in x>978123456789
ändern, wird B002AACD0A
zurückgegeben.
i.e. beim Vergleich:
%Vor%aber beim Sortieren
%Vor% EDIT 2 : Bei expliziter Verwendung der binären Sortierung ( order by NLSSORT(x,'NLS_SORT=BINARY_AI')
) ist das Ergebnis B002AACD0A>978123456789>000000000000
und entspricht dem Verhalten des Vergleichs. Aber ich habe immer noch keine Ahnung, warum das passiert.
Peter,
Das Verhalten der Sortierung wird durch die NLS_SORT
NLS_COMP
Parameter. Sie müssen eine Diskrepanz haben.
Ich erhalte das gleiche Ergebnis wie Sie mit den folgenden Parametern:
%Vor%Wenn die beiden jedoch übereinstimmen, ist das Ergebnis konsistent:
%Vor%