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
9
znaki, które reprezentują każdą cyfrę - jeden
G
znak, 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ę.