Při používání databáze Oracle můžete použít funkce jako TO_CHAR(number)
vrátit čísla jako řetězec. To vám umožní naformátovat číslo tak, aby mělo konkrétní počet desetinných míst – včetně žádných desetinných míst, pokud si to přejete.
Můžete také použít funkce jako ROUND(number)
a TRUNC(number)
k zaokrouhlení nebo zkrácení čísla na žádná desetinná místa.
K dispozici je také CAST()
funkce, která vám umožňuje přetypovat datový typ jako celé číslo, čímž efektivně odstraníte všechna desetinná místa.
TO_CHAR()
Funkce
Zde je příklad, který používá TO_CHAR(number)
funkce:
SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;
Výsledek:
1,235
V tomto případě se můj formátový model skládá z:
- jeden
fm
, což je modifikátor formátu, který odstraňuje všechny úvodní a/nebo koncové výplňové znaky, které by mohly být přidány do výsledku. - více
9
znaky, které představují každou číslici - jeden
G
znak, který představuje oddělovač skupin s ohledem na národní prostředí
Důležité je poznamenat, že nepoužívá D
formátovací prvek, což je desetinný znak s vědomím formátu. Nepoužívá ani žádné doslovné desetinné znaky (jako je čárka nebo tečka). A protože nemá žádné desetinné znaky, za takovým znakem samozřejmě nenásledují žádné číslice.
Pokud udělali mít desetinný znak, libovolný 9
nebo 0
prvky napravo od něj mohou mít za následek zahrnutí desetinných míst do výsledku.
Příklad:
SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;
Výsledek:
7.00
Pro potlačení koncových nul můžeme změnit 0
znaků na 9
s. Nicméně odstranění fm
Modifikátor může mít za následek zobrazení koncových nul i při použití 9
prvek formátu.
Zde je srovnání pro ilustraci toho, co tím myslím:
SELECT
TO_CHAR(7, 'fm99D00') AS "r1",
TO_CHAR(7, 'fm99D99') AS "r2",
TO_CHAR(7, '99D99') AS "r3"
FROM DUAL;
Výsledek:
r1 r2 r3 _______ _____ _________ 7.00 7. 7.00
ROUND()
Funkce
Zde je příklad, který používá ROUND(number)
funkce:
SELECT ROUND(1234.56, 0)
FROM DUAL;
Výsledek:
1235
ROUND()
funkce zaokrouhlí číslo na dané desetinné místo. Zde jsme zadali nula desetinných míst, čímž se z čísla odstraní všechna desetinná místa.
V tomto případě bylo číslo zaokrouhleno nahoru.
Příkaz TRUNC()
Funkce
Zde je příklad, který používá TRUNC(number)
funkce:
SELECT TRUNC(1234.56, 0)
FROM DUAL;
Výsledek:
1234
TRUNC()
funkce zkrátí číslo na dané desetinné místo. Nedochází k žádnému zaokrouhlování. Proto bylo toto číslo zkráceno na nula desetinných míst, bez zaokrouhlování.
Položka CAST()
Funkce
Zde je příklad, který používá CAST()
funkce:
SELECT CAST(1234.56 AS INT)
FROM DUAL;
Výsledek:
1235
CAST()
funkce převede svůj argument na jiný datový typ. V tomto případě jsme převedli číslo na celé číslo. Celá čísla nemají žádná desetinná místa, a proto jsou z výsledku odstraněny všechny zlomkové části (včetně desetinného znaku). Všimněte si, že výsledek byl zaokrouhlen nahoru.