Zde jsou tři možnosti převodu celého čísla na desítkovou hodnotu v SQL Server pomocí T-SQL.
Položka CAST() Funkce
CAST() funkce převede výraz jednoho datového typu na jiný:
SELECT CAST(275 AS DECIMAL(5, 2)); Výsledek:
275.00
V tomto příkladu jsme převedli celé číslo (275 ) na desetinnou hodnotu s přesností 5 a pomocí 2 desetinná místa.
Desetinná a číselná jsou synonyma a lze je používat zaměnitelně. Proto můžeme náš příklad upravit následovně, abychom dosáhli stejného výsledku:
SELECT CAST(275 AS NUMERIC(5, 2)); Výsledek:
275.00
Je důležité nezapomenout upravit přesnost podle potřeby:
SELECT CAST(18301275 AS DECIMAL(10, 2)); Výsledek:
18301275.00
Pokud argument přesnosti není dostatečně velký, dojde k chybě:
SELECT CAST(18301275 AS DECIMAL(9, 2)); Výsledek:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
Položka CONVERT() Funkce
CONVERT() funkce dělá to samé jako CAST() , kromě s mírně odlišnou syntaxí:
SELECT CONVERT(DECIMAL(5, 2), 275); Výsledek:
275.00
Použít aritmetický operátor
Další možností je použít aritmetický operátor, jako je operátor násobení:
SELECT 275 * 1.00; Výsledek:
275.00
V tomto příkladu vynásobíme celé číslo 1.00 .
V SQL Server, kdykoli operátor zkombinuje výrazy různých datových typů, datový typ s nižší prioritou se nejprve převede na datový typ s vyšší prioritou. Operace pak vrátí datový typ argumentu s vyšší prioritou.
Na serveru SQL Server má desítkové číslo vyšší prioritu než celé číslo.
Vynásobením 1,00 nezměníme celočíselnou část. Jednoduše jej převedeme na desítkové a přidáme zlomkovou část.
Seznam datových typů v pořadí priority naleznete v tématu Priorita datových typů v SQL Server.