sql >> Databáze >  >> RDS >> Oracle

4 způsoby formátování čísla bez desetinných míst v Oracle

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.


  1. Chyby T-SQL, úskalí a osvědčené postupy – spoje

  2. Výkon Android Sqlite

  3. Co je @@SERVICENAME na serveru SQL?

  4. Driver.getConnection se zablokuje pomocí ovladače SQLServer a Java 1.6.0_29