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

Oracleで数値を通貨としてフォーマットする方法

    Oracle Databaseは、TO_CHAR(number)を提供します 特定のフォーマットモデルに基づいて数値をフォーマットできるようにする関数。 TO_CHAR()で使用できるフォーマット要素は3つあります。 値を通貨として返すための関数。

    通貨フォーマット要素

    通貨フォーマット要素はLです。 、C 、およびU

    C ISO通貨記号(NLS_ISO_CURRENCYの現在の値)を返します パラメータ)。
    L 現地通貨記号(NLS_CURRENCYの現在の値)を返します パラメータ)。
    U NLS_DUAL_CURRENCYの現在の値によって決定される、ユーロ(またはその他の)二重通貨記号を返します。 パラメータ。

    これらのフォーマットモデルを使用すると、固定通貨記号を指定するのではなく、通貨/地域の設定に基づいて通貨記号を出力できます。

    通貨の文字列リテラルを指定できるのは事実ですが(たとえば、ドル記号($) )ドルの場合)、これは、通貨がそのハードコードされた値で表示されることを前提としています。世界中には他にも多くの可能な通貨があり、フォーマット要素はユーザーのセッションの現地通貨記号を動的に返すことができます。

    デモンストレーションの例を次に示します。

    ALTER SESSION SET NLS_TERRITORY = 'Australia';
    SELECT 
        TO_CHAR(12345, 'fmL99G999D00') AS "r1",
        TO_CHAR(12345, 'fmC99G999D00') AS "r3",
        TO_CHAR(12345, 'fmU99G999D00') AS "r3"
    FROM DUAL;

    結果:

               r1              r3            r3 
    _____________ _______________ _____________ 
    $12,345.00    AUD12,345.00    $12,345.00   

    これらの3つの列の唯一の違いは、通貨フォーマット要素です。最初はLを使用します 、2番目はCを使用します 、3番目はUを使用します 。

    それらはすべてfmを使用します パディングを抑制するためのフォーマット修飾子。 9も使用します および0 数値を出力するためのフォーマット要素(0 要素には先頭/末尾のゼロが含まれます)。また、グループセパレーター(Gで表される)も含まれています )、10進文字(Dで表されます 。

    二重通貨

    上記の例では、NLS_TERRITORYを設定しました Australiaへ 。これにより、3つの列のうち2つに同じ通貨記号が返されました(つまり、r1 およびr3 列)。

    次の例では、別のテリトリーを使用しています。

    ALTER SESSION SET NLS_TERRITORY = 'Denmark';
    SELECT 
        TO_CHAR(12345, 'fmL99G999D00') AS "r1",
        TO_CHAR(12345, 'fmC99G999D00') AS "r3",
        TO_CHAR(12345, 'fmU99G999D00') AS "r3"
    FROM DUAL;

    結果:

                r1              r3            r3 
    ______________ _______________ _____________ 
    kr12.345,00    DKK12.345,00    €12.345,00   

    今回は、r1ごとに異なる通貨記号を取得します およびr3 列。

    NLSパラメータの値を確認する必要がある場合は、それらの値を確認する方法を参照してください。

    'nlsparam' 引数

    TO_CHAR()を使用する場合 関数、 'nlsparam' 引数を使用して、10進文字とグループ区切り文字、現地通貨記号、および国際通貨記号を指定できます。

    次の形式を取ります:

    'NLS_NUMERIC_CHARACTERS = ''dg''
       NLS_CURRENCY = ''text''
       NLS_ISO_CURRENCY = territory '

    例:

    SELECT 
        TO_CHAR(
            1234.56, 
            'fmL99G999D99',
            'NLS_NUMERIC_CHARACTERS = '',.''
            NLS_CURRENCY = ''€''
            NLS_ISO_CURRENCY = Germany'
        )
    FROM DUAL;

    結果:

    €1.234,56

    これもまたですが、今回はLを置き換えます Cを使用 フォーマットモデル:

    SELECT 
        TO_CHAR(
            1234.56, 
            'fmC99G999D99',
            'NLS_NUMERIC_CHARACTERS = '',.''
            NLS_CURRENCY = ''€''
            NLS_ISO_CURRENCY = Germany'
        )
    FROM DUAL;

    結果:

    EUR1.234,56

    C ISO通貨記号を返します。この場合はEURです。 。

    TO_CHAR()を使用して数値をフォーマットするために使用できるフォーマット要素のリストについては、Oracleの数値フォーマット要素の完全なリストを参照してください。 機能。


    1. Xamarin.FormsのSQLServerデータベースに直接アクセスする

    2. Knee-Jerk PerfMonカウンター:ページの平均余命

    3. 作成済みのsqliteデータベース(xamarin)をインポートします

    4. MariaDB FLOOR()とTRUNCATE()