Peter,
hành vi sắp xếp được điều chỉnh bởi NLS_SORT
tham số phiên, trong khi hành vi so sánh phụ thuộc vào NLS_COMP
tham số. Bạn phải có thông tin không khớp.
Tôi nhận được kết quả tương tự như bạn làm với các thông số sau:
SQL> SELECT *
2 FROM nls_session_parameters
3 WHERE parameter IN ('NLS_COMP', 'NLS_SORT');
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_SORT FRENCH
NLS_COMP BINARY
Tuy nhiên, khi cả hai được đối sánh, kết quả là nhất quán:
SQL> alter session set nls_comp=LINGUISTIC;
Session altered
SQL> select * from (
2 select '000000000000' as x from dual
3 union
4 select '978123456789' as x from dual
5 union
6 select 'B002AACD0A' as x from dual
7 ) /*where x>'000000000000'*/ order by x;
X
------------
B002AACD0A
000000000000
978123456789
SQL> select * from (
2 select '000000000000' as x from dual
3 union
4 select '978123456789' as x from dual
5 union
6 select 'B002AACD0A' as x from dual
7 ) where x > '000000000000' order by x;
X
------------
978123456789