Why does Oracle's varchar sort order not match the behavior of varchar comparison? Why does Oracle's varchar sort order not match the behavior of varchar comparison? oracle oracle

Why does Oracle's varchar sort order not match the behavior of varchar comparison?


Peter,

the behaviour of the sorting is regulated by the NLS_SORT session parameter, whereas the behaviour for comparisons is dependent upon the NLS_COMP parameter. You must have a mismatch.

I obtain the same result as you do with the following parameters:

SQL> SELECT *  2    FROM nls_session_parameters  3   WHERE parameter IN ('NLS_COMP', 'NLS_SORT');PARAMETER                      VALUE------------------------------ ----------------------------------------NLS_SORT                       FRENCHNLS_COMP                       BINARY

However when the two are matched the result is consistent:

SQL> alter session set nls_comp=LINGUISTIC;Session alteredSQL> 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------------B002AACD0A000000000000978123456789SQL> 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