sql >> Base de Datos >  >> RDS >> Oracle

¿Por qué el orden de clasificación de varchar de Oracle no coincide con el comportamiento de la comparación de varchar?

Pedro,

el comportamiento de la clasificación está regulado por NLS_SORT parámetro de sesión, mientras que el comportamiento de las comparaciones depende del NLS_COMP parámetro. Debes tener una discrepancia.

Obtengo el mismo resultado que tú con los siguientes parámetros:

SQL> SELECT *
  2    FROM nls_session_parameters
  3   WHERE parameter IN ('NLS_COMP', 'NLS_SORT');

PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_SORT                       FRENCH
NLS_COMP                       BINARY

Sin embargo, cuando los dos coinciden, el resultado es consistente:

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