Korzystając z bazy danych Oracle, możesz używać funkcji takich jak TO_CHAR(number) zwracać liczby jako ciąg. Umożliwia to sformatowanie liczby tak, aby miała określoną liczbę miejsc dziesiętnych – w tym bez miejsc dziesiętnych, jeśli tego chcesz.
Możesz także użyć funkcji takich jak ROUND(number) i TRUNC(number) zaokrąglić lub skrócić liczbę bez miejsc po przecinku.
Jest też CAST() funkcja, która pozwala rzutować typ danych jako liczbę całkowitą, co skutecznie usuwa wszystkie miejsca dziesiętne.
TO_CHAR() Funkcja
Oto przykład, w którym użyto TO_CHAR(number) funkcja:
SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL; Wynik:
1,235
W tym przypadku mój model formatu składa się z:
- jeden
fm, który jest modyfikatorem formatu, który usuwa wszelkie wiodące i/lub końcowe znaki dopełniające, które mogą zostać dodane do wyniku. - wiele
9znaki, które reprezentują każdą cyfrę - jeden
Gznak, który reprezentuje separator grup uwzględniający ustawienia regionalne
Należy zauważyć, że nie używa on D element formatu, który jest znakiem dziesiętnym uwzględniającym format. Nie używa też żadnych literalnych znaków dziesiętnych (takich jak przecinek lub kropka). A ponieważ nie ma żadnych znaków dziesiętnych, oczywiście nie ma cyfr po takim znaku.
Jeśli zrobiliśmy mieć znak dziesiętny, dowolny 9 lub 0 elementy po prawej stronie mogą spowodować uwzględnienie miejsc dziesiętnych w wyniku.
Przykład:
SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL; Wynik:
7.00
Aby pominąć końcowe zera, możemy zmienić 0 znaków do 9 s. Jednak usunięcie fm modyfikator może spowodować pojawienie się końcowych zer nawet przy użyciu 9 element formatu.
Oto porównanie ilustrujące, co mam na myśli:
SELECT
TO_CHAR(7, 'fm99D00') AS "r1",
TO_CHAR(7, 'fm99D99') AS "r2",
TO_CHAR(7, '99D99') AS "r3"
FROM DUAL; Wynik:
r1 r2 r3 _______ _____ _________ 7.00 7. 7.00
ROUND() Funkcja
Oto przykład, w którym użyto ROUND(number) funkcja:
SELECT ROUND(1234.56, 0)
FROM DUAL; Wynik:
1,235
ROUND() funkcja zaokrągla liczbę do podanego miejsca dziesiętnego. Tutaj określiliśmy zero miejsc dziesiętnych, co usuwa wszystkie miejsca dziesiętne z liczby.
W tym przypadku liczba została zaokrąglona w górę.
TRUNC() Funkcja
Oto przykład, w którym użyto TRUNC(number) funkcja:
SELECT TRUNC(1234.56, 0)
FROM DUAL; Wynik:
1234
TRUNC() funkcja obcina liczbę do podanego miejsca dziesiętnego. Nie ma zaokrąglania. Dlatego ta liczba została obcięta do zera miejsc po przecinku, bez zaokrąglania.
CAST() Funkcja
Oto przykład, w którym użyto funkcji CAST() funkcja:
SELECT CAST(1234.56 AS INT)
FROM DUAL; Wynik:
1,235
CAST() funkcja konwertuje swój argument na inny typ danych. W tym przypadku zamieniliśmy liczbę na liczbę całkowitą. Liczby całkowite nie mają miejsc dziesiętnych, więc wszystkie części ułamkowe są usuwane z wyniku (łącznie ze znakiem dziesiętnym). Zwróć uwagę, że wynik został zaokrąglony w górę.