Oracle
 sql >> Baza danych >  >> RDS >> Oracle

TO_CHAR(liczba) Funkcja w Oracle

W bazie danych Oracle TO_CHAR(number) funkcja konwertuje liczbę na VARCHAR2 wartość w formacie określonym przez argument format.

Składnia

Składnia wygląda tak:

TO_CHAR(n [, fmt [, 'nlsparam' ] ])

Gdzie:

  • n może być typu NUMBER , BINARY_FLOAT lub BINARY_DOUBLE .
  • fmt to opcjonalny model formatu, który określa sposób formatowania wyniku. Zobacz prawidłowe elementy formatu liczb, których można użyć do skonstruowania modelu formatu.
  • 'nlsparam' jest opcjonalnym argumentem, który określa sposób zwracania różnych znaków. Można go użyć do określenia znaku dziesiętnego i separatora grupy, symbolu waluty lokalnej i symbolu waluty międzynarodowej. Jeśli ten argument zostanie pominięty, używane są wartości domyślne dla bieżącej sesji.

Przykład

Oto przykład pokazujący, jak działa funkcja:

SELECT TO_CHAR(12345, '99G999') AS Result
FROM DUAL;

Wynik:

    RESULT 
__________ 
 12,345   

Pierwszy argument to rzeczywista liczba, którą formatujemy, a drugi argument to model formatu. Model formatu określa sposób formatowania liczby.

W takim przypadku nasz model formatu formatuje liczbę z separatorem grup w odpowiedniej pozycji. Każda cyfra jest reprezentowana przez 9 , a separator grup jest reprezentowany przez G .

Oto, co się stanie, jeśli nieznacznie zmienimy model formatu:

SELECT TO_CHAR(12345, '099G999') AS Result
FROM DUAL;

Wynik:

     RESULT 
___________ 
 012,345    

W tym przypadku rozpoczęliśmy model formatu od 0 postać. Zwraca wiodące zero, gdy ma to zastosowanie. 9 znak nie zwraca wiodących zer.

W rzeczywistości moglibyśmy zastąpić wszystkie 9 s z 0 jeśli chcemy. Oto porównanie, które pokazuje, jak bardzo wyniki mogą się różnić, w zależności od używanego elementu formatu:

SELECT 
    TO_CHAR(12, '000G000') AS "000G000",
    TO_CHAR(12, '999G999') AS "999G999"
FROM DUAL;

Wynik:

    000G000     999G999 
___________ ___________ 
 000,012          12    

Symbole walut

Możesz użyć L element formatu, aby zwrócić symbol waluty lokalnej.

Przykład:

SELECT TO_CHAR(12345, 'L99G999D99') AS Result
FROM DUAL;

Wynik:

                 RESULT 
_______________________ 
          $12,345.00   

W tym przykładzie zastosowano model formatu, który wyświetla wynik przy użyciu symbolu waluty lokalnej (reprezentowanej przez L ), separator grup (reprezentowany przez G ), znak dziesiętny (reprezentowany przez D ) i oczywiście każdą cyfrę (reprezentowaną przez 9 ).

Symbol waluty lokalnej jest określany przez bieżącą wartość NLS_CURRENCY parametr. Prawdą jest, że mogliśmy użyć znaku dolara ($ ) dla symbolu waluty, ale zakłada się, że waluta jest denominowana w dolarach. Istnieje wiele innych możliwych walut na całym świecie, a L element format jest w stanie dynamicznie zwrócić symbol lokalnej waluty dla sesji użytkownika.

Zobacz Jak sprawdzić wartości parametrów NLS, jeśli chcesz je sprawdzić.

Zobacz pełną listę elementów formatu liczb w Oracle, aby zapoznać się z listą elementów formatu, których można użyć do formatowania liczb za pomocą tej funkcji.

Format domyślny

Jeśli pominiesz fmt argument, liczba jest konwertowana na VARCHAR2 wartość dokładnie na tyle długa, aby zmieścić jej znaczące cyfry.

Oto przykład konwersji liczby bez określenia formatu:

SELECT TO_CHAR(525.45)
FROM DUAL;

Wynik:

525.45

'nlsparam' Argument

'nlsparam' argument może być użyty do określenia znaku dziesiętnego i separatora grupy, symbolu waluty lokalnej i symbolu waluty międzynarodowej.

Przybiera następującą formę:

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

Przykład:

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

Wynik:

         €1.234,56

Tutaj jest znowu, ale tym razem zastępuję L z C w modelu formatu:

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

Wynik:

      EUR1.234,56

C zwraca symbol waluty ISO, którym w tym przypadku jest EUR .

Jak stłumić wypełnienie

Być może zauważyłeś, że w niektórych przykładach zastosowano dopełnienie po lewej stronie wyników. Takie wypełnienie można usunąć za pomocą fm modyfikator formatu.

Przykład:

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

Wynik:

€1.234,56

Argumenty zerowe

Przekazywanie null wyniki w null :

SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;

Wynik:

null

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Brakujący argument

Wywołanie funkcji bez przekazywania żadnych argumentów powoduje błąd:

SELECT TO_CHAR()
FROM DUAL;

Wynik:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Przekazywanie zbyt wielu argumentów również powoduje błąd:

SELECT TO_CHAR(123, '99', 'NLS_ISO_CURRENCY = GERMANY', 'oops!' )
FROM DUAL;

Wynik:

SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy kolejność tabel, do których odwołuje się klauzula ON w JOIN, ma znaczenie?

  2. Metadane dotyczące typów rekordów na poziomie pakietu PL/SQL

  3. Powiadomienie o zmianie bazy danych Oracle

  4. czy można mieć generator sekwencji alfanumerycznych w sql

  5. Narzędzia programistyczne umożliwiające bezpośredni dostęp do baz danych