为计算列添加强制 DECIMAL 类型的列

ADD COLUMN with forced DECIMAL type for computed column

我正在尝试更改 a 以添加新的计算列,但最终结果是没有...小数的小数 (???)

我想出了

ALTER TABLE
  dbo.transaction_payment
ADD
  total_amount AS CAST(
    (CAST(amount_transac AS decimal(12, 2))) + (CAST(amount_tip AS decimal(12, 2))) AS decimal(12, 2)
  )

但是引擎告诉我出错了。我将每个值转换为没有隐式类型并失去精度,然后转换最终结果。

假设您使用的是 Microsoft SQL 服务器(因为您的代码中有 dbo.),您应该更新该列而不是更改它。您的总和似乎缺少一组括号:

UPDATE dbo.transaction_payment
SET total_amount = CAST((CAST(amount_transac AS DECIMAL(12,2))) + (CAST(amount_tip AS decimal(12,2)))AS decimal(12,2))

您不能 "alter" 计算列,因此:

ALTER TABLE dbo.transaction_payment
    ADD total_amount as (CONVERT(decimal(12, 2), amount_transac + amount_tip));

如果已经存在,先删除:

ALTER TABLE dbo.transaction_payment
    DROP COLUMN IF EXISTS total_amount;