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.