sql >> Databáze >  >> RDS >> Sqlserver

4 Funkce pro formátování čísla na 2 desetinná místa v SQL Server

Při použití T-SQL s SQL Serverem můžeme formátovat čísla různými metodami v závislosti na požadovaném formátu.

Níže jsou uvedeny čtyři funkce, které lze použít k formátování čísla na dvě desetinná místa na serveru SQL.

CAST() Funkce

Nejviditelnější způsob, jak to udělat, je převést číslo na desítkový typ. Dvě funkce, které to za nás mohou udělat, jsou CAST() a CONVERT() .

Zde je příklad použití CAST() :

SELECT CAST(275 AS DECIMAL(5, 2));

Výsledek:

275.00

Tuto metodu můžeme použít i v případě, že číslo je již desetinná hodnota, ale s více desetinnými místy.

Jedna věc, kterou je třeba si zapamatovat, je, že pokud snižujete počet desetinných míst z čísla s více než dvěma desetinnými místy, můžete skončit se zaokrouhlením druhého desetinného místa:

SELECT CAST(275.4567 AS DECIMAL(5, 2));

Výsledek:

275.46

CONVERT() Funkce

Zde používáme CONVERT() udělat totéž – převést číslo na desítkové:

SELECT CONVERT(DECIMAL(5, 2), 275);

Výsledek:

275.00

FORMAT() Funkce

Dalším způsobem, jak formátovat číslo na dvě desetinná místa, je použít FORMAT() funkce:

SELECT FORMAT(275, 'N2');

Výsledek:

275.00

Tato funkce ve skutečnosti převádí číslo na řetězec, takže technicky vzato není výsledkem číselný typ.

N2 část se označuje jako formátovací řetězec. V tomto případě N je pro číslo a 2 je pro počet desetinných míst (tento počet můžete podle potřeby zvýšit nebo snížit).

Stejnou techniku ​​lze použít ke zmenšení desetinných míst na dvě z čísla s více desetinnými místy:

SELECT FORMAT(275.4567, 'N2');

Výsledek:

275.46

Bylo zaokrouhleno nahoru, stejně jako když jsme převedli číslo v druhém příkladu.

Dalším způsobem, jak to udělat, je použít vlastní formátovací řetězec. Vlastní formátovací řetězce umožňují zadat formát, který nemusí být podporován standardním formátovacím řetězcem.

Zde je příklad použití vlastních formátovacích řetězců:

SELECT 
    FORMAT(275, '###.##') AS "###.##",
    FORMAT(275, '000.00') AS "000.00",
    FORMAT(275.4567, '###.##') AS "###.##",
    FORMAT(275.4567, '000.00') AS "000.00";

Výsledek:

+----------+----------+----------+----------+
| ###.##   | 000.00   | ###.##   | 000.00   |
|----------+----------+----------+----------|
| 275      | 275.00   | 275.46   | 275.46   |
+----------+----------+----------+----------+

Vidíme, že je rozdíl mezi použitím # a 0 ve formátovacím řetězci. # specifikátor formátu potlačuje všechny nevýznamné nuly, zatímco 0 specifikátor formátu ne.

Ale možná důležitější (pro účely tohoto článku) je 0 specifikátor formátu umožňuje přidat nevýznamné nuly, pokud nejsou přítomny v původním čísle. Proto jej lze použít k přidání dvou desetinných míst k celému číslu (jak je vidět v příkladu výše).

STR() Funkce

Dalším způsobem formátování čísla na dvě desetinná místa je použití STR() funkce:

SELECT STR(275, 6, 2);

Výsledek:

275.00

Tato funkce vrací znaková data převedená z číselných dat. Znaková data jsou zarovnána doprava, se zadanou délkou a desetinnou přesností.

První argument je výraz datového typu float s desetinnou čárkou.

Druhým argumentem je celková délka. To zahrnuje desetinnou čárku, znaménko, číslice a mezery. Výchozí hodnota je 10.

Třetím argumentem je počet míst napravo od desetinné čárky. Ta musí být menší nebo rovna 16.


  1. Jak provedu IF...THEN v SQL SELECT?

  2. Jaký je rozdíl mezi funkcemi RANK() a DENSE_RANK() v oracle?

  3. Uspořádejte uzly TreeView přetažením

  4. Jak oříznout řetězce v SQL