sql >> データベース >  >> RDS >> Oracle

Oracleのvarcharのソート順がvarchar比較の動作と一致しないのはなぜですか?

    ピーター、

    並べ替えの動作は、NLS_SORTによって規制されています。 セッションパラメータ。比較の動作はNLS_COMPに依存します。 パラメータ。不一致が必要です。

    次のパラメータを使用した場合と同じ結果が得られます。

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

    ただし、2つが一致すると、結果は一貫します。

    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. OracleとSQLサーバーを使用したページングと一般的なページング方法

    2. 日付ごとにSQLデータベースからデータを取得しますか?

    3. マルチステートメントテーブル値関数とインラインテーブル値関数

    4. MariaDB VERSION()の説明