Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao thứ tự sắp xếp varchar của Oracle không khớp với hành vi của so sánh varchar?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLSQL Chèn vào với truy vấn con và mệnh đề trả về

  2. Trình tự ngủ đông trên oracle, @GeneratedValue (chiến lược =GenerationType.AUTO)

  3. Làm cách nào để tôi có thể đưa ra một lệnh duy nhất từ ​​dòng lệnh thông qua sql plus?

  4. NLS_CHARSET_DECL_LEN () Hàm trong Oracle

  5. thay đổi cột thả bảng trong cơ sở dữ liệu oracle