Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да форматирате число като валута в Oracle

Oracle Database предоставя TO_CHAR(number) функция, която ви позволява да форматирате числа въз основа на даден модел на форматиране. Има три форматни елемента, които можете да използвате с TO_CHAR() функция, за да върне стойност като валута.

Елементи на валутния формат

Елементите на валутния формат са 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   

Единствената разлика между тези три колони е елементът на валутния формат. Първият използва L , вторият използва C , а третият използва U .

Всички те използват fm модификатор на формат, за да потисне всяко допълване. Те също използват 9 и 0 форматни елементи за извеждане на числата (0 елемент включва водещи/завършващи нули). Те също така включват разделител на групи (представен от G ), десетичен знак (представен с D). ).

Двойни валути

В горния пример зададох NLS_TERRITORY до Australia . Това доведе до връщане на същия символ за валута в две от трите колони (т.е. 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' Аргументът може да се използва за определяне на десетичния знак и разделителя на групата, символа за местна валута и символа за международна валута.

Приема следната форма:

'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 .

Вижте този пълен списък на елементите на числовия формат в Oracle за списък с елементи на формат, които могат да се използват за форматиране на числа с TO_CHAR() функция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membership.ValidateUser винаги връща false след надстройка до VS 2010 / .NET 4.0

  2. Oracle IN срещу Съществува ли разлика?

  3. Как да премахна дубликати от списък, разделен със запетая, чрез регулярен израз в Oracle, но не искам дублирани стойности?

  4. Съобщение за грешка в sqldeveloper:Мрежовият адаптер не можа да установи грешката при връзката

  5. Как да създадете директория в Oracle?