Ето три опции за преобразуване на цяло число в десетична стойност в SQL Server с помощта на T-SQL.
CAST()
Функция
CAST()
функция преобразува израз от един тип данни в друг:
SELECT CAST(275 AS DECIMAL(5, 2));
Резултат:
275.00
В този пример преобразувахме цяло число (275
) до десетична стойност с точност от 5
и с 2
десетичните знаци.
Десетичното и числото са синоними и могат да се използват взаимозаменяемо. Следователно можем да коригираме нашия пример, както следва, за да постигнем същия резултат:
SELECT CAST(275 AS NUMERIC(5, 2));
Резултат:
275.00
Важно е да запомните да коригирате прецизността според изискванията:
SELECT CAST(18301275 AS DECIMAL(10, 2));
Резултат:
18301275.00
Ако аргументът за точност не е достатъчно голям, възниква грешка:
SELECT CAST(18301275 AS DECIMAL(9, 2));
Резултат:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
CONVERT()
Функция
CONVERT()
функцията прави същото като CAST()
, освен с малко по-различен синтаксис:
SELECT CONVERT(DECIMAL(5, 2), 275);
Резултат:
275.00
Използвайте аритметичен оператор
Друга възможност е да използвате аритметичен оператор, като например оператор за умножение:
SELECT 275 * 1.00;
Резултат:
275.00
В този пример ние умножаваме цялото число по 1.00
.
В SQL Server, когато оператор комбинира изрази от различни типове данни, типът данни с по-нисък приоритет първо се преобразува в типа данни с по-висок приоритет. След това операцията връща типа данни на аргумента с по-висок приоритет.
В SQL Server десетичният знак има по-висок приоритет пред цяло число.
Като го умножим по 1,00, ние не променяме цялата част. Просто го преобразуваме в десетичен и добавяме дробната част.
Вижте Приоритет на типове данни в SQL Server за списък с типове данни по приоритет.