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

Sformatuj liczbę jako procent w Oracle

Mimo że Oracle Database ma TO_CHAR(number) funkcja pozwalająca na formatowanie liczb, nie dostarcza elementu formatującego dla znaku procentu.

Dlatego, jeśli chcemy sformatować liczbę jako procent w Oracle Database, musimy połączyć znak procentu i liczbę.

Przykład

Możemy użyć CONCAT() funkcja łączenia liczby i znaku procentu.

Nadal możemy użyć TO_CHAR(number) funkcja formatowania liczby tak, aby zawierała żądane miejsca dziesiętne, wiodące zera (lub nie) itp.:

SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;

Wynik:

18.00%

Tutaj użyłem 0 format elementu, co oznacza, że ​​pozycja cyfry będzie zawsze drukowana, nawet jeśli zawiera początkowe/końcowe zero.

Użyłem również fm modyfikator formatu, aby pominąć wszelkie wiodące/końcowe zera lub spacje.

Oto kilka innych modeli formatu:

SELECT 
    CONCAT(TO_CHAR(7, 'fm00'), '%') AS "1",
    CONCAT(TO_CHAR(7, 'fm99'), '%') AS "2",
    CONCAT(TO_CHAR(7.4567, 'fm0D00'), '%') AS "3",
    CONCAT(TO_CHAR(7, 'fm0D00'), '%') AS "4"
FROM DUAL;

Wynik:

     1     2        3        4 
______ _____ ________ ________ 
07%    7%    7.46%    7.00%   

W razie potrzeby możemy wykonać obliczenia na podstawie liczby:

SELECT 
    CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
    CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL;

Wynik:

       1         2 
________ _________ 
1.80%    18.00%   

W tym przypadku dołączyłem 9 sformatuj element tak, aby wszystkie wiodące zera zostały pominięte.

Pomijanie TO_CHAR() Funkcja

Jeśli nie mamy szczególnej potrzeby formatowania liczby poza przekonwertowaniem jej na format procentowy, nie potrzebujemy nawet TO_CHAR() funkcja:

SELECT CONCAT(18, '%')
FROM DUAL;

Wynik:

18%

Operator konkatenacji

Innym sposobem łączenia liczby i znaku procentu jest użycie operatora łączenia (|| ):

SELECT 18 || '%'
FROM DUAL;

Wynik:

18%

I oto jest z TO_CHAR() dodano funkcję dodatkowego formatowania:

SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;

Wynik:

18.00%

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć tabelę, w której statystyki są zablokowane?

  2. Różnica między Oracle IN a Exists?

  3. Duży plik .patch_storage

  4. Jak dodać pionowe obramowania do siatki wyjściowej SQL*Plus / SQLcl?

  5. Wybór NOT IN z wartościami NULL