sql >> Databáze >  >> RDS >> Oracle

Proč pořadí řazení varchar společnosti Oracle neodpovídá chování srovnání varchar?

Peter,

chování třídění je regulováno NLS_SORT session, zatímco chování pro porovnání závisí na NLS_COMP parametr. Musíte mít nesoulad.

S následujícími parametry získám stejný výsledek jako vy:

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

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

Když se však tyto dva shodují, výsledek je konzistentní:

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



  1. Přístup k ladění indexu – 1. část

  2. Vyhledat konkrétní hodnotu ve všech polích ve všech tabulkách (Oracle)

  3. Jak přidat podmíněný jedinečný index na PostgreSQL

  4. Jak lze v Oracle zřetězit více řádků do jednoho bez vytvoření uložené procedury?