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

OracleのNLS_INITCAP()関数

    Oracleでは、NLS_INITCAP() 関数は、各単語の最初の文字を大文字で、他のすべての文字を小文字で引数を返します。

    ただし、実際の大文字と小文字は、使用されている照合によって異なります。たとえば、最初の文字よりも多くの文字が大文字になる可能性があります。

    INITCAP()に似ています 関数。ただし、照合を指定できる2番目の引数を受け入れる点が異なります。照合は、ケース変換の特別な言語要件を処理します。

    構文

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

    NLS_INITCAP(char [, 'nlsparam' ])

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

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

    'NLS_SORT = sort'

    sortの場所 名前付きの照合です。

    この引数を省略すると、関数の決定された照合が使用されます。

    簡単な例を次に示します。

    SELECT NLS_INITCAP('the lake')
    FROM DUAL;

    結果:

       NLS_INITCAP('THELAKE') 
    _________________________ 
    The Lake                 

    照合を指定する

    照合を指定すると結果がどのように変わるかを示す例を次に示します。

    SELECT 
        NLS_INITCAP('het ijsselmeer') AS c1,
        NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
    FROM DUAL;

    結果:

                   C1                C2 
    _________________ _________________ 
    Het Ijsselmeer    Het IJsselmeer    

    2番目の列で、 IJsselmeerの最初の2文字に注意してください。 は大文字ですが、最初の列は最初の文字のみを大文字にします。

    オランダ語では、 ij は1文字と見なされるため、文の先頭または固有名に出現する場合は、両方の文字が大文字になります。

    NLS_SORTに注意してください 実行時にのみ最初の引数の照合をオーバーライドします。したがって、次のステートメントは、2番目の引数ではなく、最初の引数の照合を返します。

    SELECT
        COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
    FROM DUAL;

    結果:

            COLLATION 
    _________________ 
    USING_NLS_COMP   

    照合の対象は非常に複雑になる可能性があります。この関数の照合決定規則および照合導出規則については、 『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。

    すべて大文字を渡すとどうなりますか?

    すべて大文字を渡しても結果は変わりません:

    SELECT 
        NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
    FROM DUAL;

    結果:

               RESULT 
    _________________ 
    Het IJsselmeer    

    ヌル値

    引数がnullの場合 、結果はnullです :

    SET NULL 'null';
    
    SELECT 
        NLS_INITCAP('het IJsselmeer', null) AS r1,
        NLS_INITCAP(null, 'NLS_SORT = XDutch') AS r2,
        NLS_INITCAP(null, null) AS r3
    FROM DUAL;

    結果:

         R1      R2      R3 
    _______ _______ _______ 
    null    null    null    

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

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

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

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

    SELECT NLS_INITCAP()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NLS_INITCAP()
    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 NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
    FROM DUAL
    Error at Command Line : 1 Column : 59
    Error report -
    SQL Error: ORA-00939: too many arguments for function
    00939. 00000 -  "too many arguments for function"
    *Cause:    
    *Action:

    1. SQL Serverトリガー–パート2DDLおよびLOGONトリガー

    2. TreeViewImageComboドロップダウンアクセスメニュー

    3. oracle plsqlトリガーを使用して誕生日から年齢を計算し、年齢を表に挿入します

    4. DistinctとGroupByのパフォーマンスが異なる場合はどうなりますか?