Как привести столбец к десятичному типу в SQL Server?

#c# #sql-server

#c# #sql-сервер

Вопрос:

tablesAA имеет два столбца, amount есть decimal (28,10) , amountscale есть int .

Мне нужно произнести amount decimal [ (p[ ,s] )] команду » кому » .

Буква «s» является динамической по значению amountscale столбца, но нижний код вызывает синтаксическую ошибку.

Итак, как выполнить приведение amount в зависимости от amountscale значения?

 select 
    amount, amountscale,
    cast(amount as decimal(28, amountscanle)) as amount 
from tablesAA
  

Комментарии:

1. Почему вы хотите преобразовать целое число в десятичное число на уровне базы данных?

Ответ №1:

Увы, для a cast() масштаб и точность должны быть постоянными.

Если вам просто нужны выходные данные с определенным масштабом и точностью, вы можете преобразовать их в строку с помощью str() (описано здесь):

 select amount, amountscanle,
       str(amount, 28, amountscanle) as amount2
from tablesAA;
  

Альтернативой является подход грубой силы:

 select amount, amountscanle,
       (case when amountscanle = 0 then cast(amount as decimal(28, 0)
             when amountscanle = 1 then cast(amount as decimal(28, 1)
             when amountscanle = 2 then cast(amount as decimal(28, 2)
             . . . 
        end) as amount2
from tablesAA;