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

OracleのNLSSORT()関数

    Oracleでは、NLSSORT() 関数は、指定された文字値と明示的または暗黙的に指定された照合の照合キーを返します。

    この関数は、指定された照合に基づいて文字列値との比較を実行する場合に役立ちます。

    構文

    構文は次のようになります:

    NLSSORT(char [, 'nlsparam' ])

    両方のchar および‘ nlsparam ‘は任意のデータ型CHARにすることができます 、VARCHAR2NCHAR 、またはNVARCHAR2

    'nlsparam' 引数の形式は次のとおりです。

    'NLS_SORT = collation'

    collationの場所 言語照合またはBINARYの名前です 。

    NLSSORT() 指定された照合を使用して照合キーを生成します。 ‘ nlsparamを省略した場合 ‘の場合、関数は引数 charの派生照合を使用します

    関数の戻り値の例を次に示します。

    SELECT 
        NLSSORT('Chess') AS Result
    FROM DUAL;

    結果:

             RESULT 
    _______________ 
    436865737300   

    照合を指定する

    この例では、照合を指定します:

    SELECT 
        NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
    FROM DUAL;

    結果:

                             RESULT 
    _______________________________ 
    691E37141E370003010101010100   

    2つの文字列の比較

    NSSORT()の例を次に示します。 関数を使用して、言語規則に基づいて2つの文字列を比較できます。

    DECLARE 
        v1 NVARCHAR2(10) := 'Schach';
        v2 NVARCHAR2(10) := 'Schabsel';
    BEGIN
        IF NLSSORT(v1, 'NLS_SORT=XGERMAN') > NLSSORT(v2, 'NLS_SORT=XGERMAN') THEN
            DBMS_OUTPUT.PUT_LINE( 'Yes' );
        ELSE
            DBMS_OUTPUT.PUT_LINE( 'No' );
        END IF;
    END;

    結果:

    Yes

    ヌル値

    nullを渡す nullを返します :

    SELECT
        NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
        NLSSORT('fasilə', null) AS r2,
        NLSSORT(null, null) AS r3
    FROM DUAL;

    結果:

         R1      R2      R3 
    _______ _______ _______ 
    null    null    null   

    デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    引数の数が正しくありません

    NLSSORT()の呼び出し 引数を渡さないとエラーが返されます:

    SELECT NLSSORT()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NLSSORT()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00938: not enough arguments for function
    00938. 00000 -  "not enough arguments for function"
    *Cause:    
    *Action:

    そして、あまりにも多くの引数を渡すと、エラーが発生します:

    SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
    FROM DUAL
    Error at Command Line : 1 Column : 49
    Error report -
    SQL Error: ORA-00939: too many arguments for function
    00939. 00000 -  "too many arguments for function"
    *Cause:    
    *Action:

    詳細情報

    NLSSORT()の詳細は、 『Oracle SQL言語リファレンス』を参照してください。 機能。


    1. OracleデータベースのNLSパラメータのリスト

    2. MySQLサブクエリを操作する方法

    3. 等しくない<>!=NULLの演算子

    4. EntityFramework7とAsp.Net5を使用してSQLストアドプロシージャを呼び出すにはどうすればよいですか