V SQL Server T-SQL STR()
funkce vrací znaková data převedená z číselných dat. Návratová hodnota má návratový typ varchar .
Číselná data zadáte jako argument při volání funkce. Funkce je poté převede na znaková data. Existují také dva volitelné argumenty, které můžete použít k určení délky a počtu míst napravo od desetinné čárky.
Syntaxe
Syntaxe vypadá takto:
STR ( float_expression [ , délka [ , desítkové ] ] )
Kde float_expression je výraz přibližné číselné hodnoty (float ) datový typ s desetinnou čárkou.
délka je volitelný argument, který můžete použít k určení celkové délky. To zahrnuje desetinnou čárku, znaménko, číslice a mezery. Výchozí hodnota je 10.
desítkové je počet míst napravo od desetinné čárky. Maximální hodnota může být 16. Pokud je více, bude zkrácena na 16.
Příklad 1 – Základní použití
Zde je příklad, jak to funguje:
SELECT STR(123.45) AS Result;
Výsledek:
+-------------+| Výsledek ||-------------|| 123 |+------------+
Příklad 2 – Zaokrouhlení
Ve výchozím nastavení je číslo zaokrouhleno na celé číslo. Pokud upravíme vstup z předchozího příkladu (např. zvětšíme zlomkovou část z .45
na .55
) dostaneme následující:
SELECT STR(123.55) AS Result;
Výsledek:
+-------------+| Výsledek ||-------------|| 124 |+------------+
Příklad 3 – Délka
Při použití volitelné délky jeho hodnota by měla být větší nebo rovna části čísla před desetinnou čárkou plus znaménko čísla (pokud existuje).
Například následující je v pořádku, protože délka je větší než část čísla před desetinnou čárkou:
SELECT STR(123,55; 4) AS Result;
Výsledek:
+-----------+| Výsledek ||-----------|| 124 |+----------+
Následující příklad však ukazuje, co se stane, když je délka hodnota je příliš malá:
SELECT STR(123,55; 2) AS Result;
Výsledek:
+-----------+| Výsledek ||-----------|| ** |+----------+
Všimněte si také, že délka určuje délku výstupu a zahrnuje desetinnou čárku, znaménko, číslice a mezery. Výchozí délka je 10.
Zde je příklad demonstrující rozdíl ve výstupu v závislosti na hodnotě length argument:
SELECT 123 AS '123', STR(123; 3) AS '3', STR(123, 10) AS '10', STR(123, 16) AS '16';
Výsledek:
+-------+-----+------------+------------------+ | 123 | 3 | 10 | 16 ||-------+-----+------------+------------------|| 123 | 123 | 123 | 123 |+-------+-----+------------+-----------------+Pro další způsob, jak to demonstrovat, v následujícím příkladu oříznu výstup pomocí
TRIM()
funkce (a porovnejte ji s neoříznutou verzí):SELECT TRIM(STR(123; 16)) AS 'A', STR(123; 16) AS 'B';Výsledek:
+-----+------------------+| A | B ||-----+------------------|| 123 | 123 |+-----+------------------+Příklad 4 – desetinná místa
Zde je příklad použití volitelného desítkového parametr:
SELECT STR(123,55; 8; 4) AS Výsledek;Výsledek:
+-----------+| Výsledek ||-----------|| 123 5500 |+----------+Všimněte si, že jsem zvýšil hodnotu pro length aby se vešly desetinná místa.
Pokud zkrátím délku hodnotu na
6
, chápu toto:SELECT STR(123,55; 6; 4) AS Výsledek;Výsledek:
+-----------+| Výsledek ||-----------|| 123,55 |+----------+