我是SQL Server Management Studio的新手,假设我在tbl_product
,column1
(nchar(60)
),column2
({{1} }),并且在我的nchar(60)
中,我希望它的值是(column3
)的结果,我该怎么做?
我在列属性中看到了一个“公式”,但是我不确定如何在此处设置公式,这是屏幕截图:
注意:让我们将column1和column2的数据类型设置为column1 * column2
。
答案 0 :(得分:2)
假设两列都是代表小数的字符串,则将公式设置为此:
CONVERT(decimal,column1) * CONVERT(decimal,column2)
要更改列的显示方式,只需更改您的SELECT
语句。列数据将始终尽可能“准确”地存储。
尝试运行此:
SELECT CAST(column3 as decimal(10,2)) As ComputedColumn FROM tbl_product
在上面的语句中,强制转换的意思是“总共显示10位,小数点后两位”。您可以将这些数字更改为所需的任何数字。
答案 1 :(得分:0)
在定义表时,可以使用事务sql对两列求和。
CREATE TABLE dbo.Products
(
ProductID int IDENTITY (1,1) NOT NULL
, QtyAvailable smallint
, UnitPrice money
, InventoryValue AS QtyAvailable * UnitPrice
);
-- Insert values into the table.
INSERT INTO dbo.Products (QtyAvailable, UnitPrice)
VALUES (25, 2.00), (10, 1.5);
-- Display the rows in the table.
SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue
FROM dbo.Products;
答案 2 :(得分:0)
CREATE TABLE [dbo].[Test]
( [Test1] [nchar(10)] NULL,
[Test2] [nchar(10)] NULL,
[Total] AS (cast ([a] as int)+ cast( [b] as int))
) ON [PRIMARY]
GO
INSERT INTO dbo.Test ( test1, test2 ) VALUES
( '1', -- test1 - int
'2' -- test2 - int
)
SELECT * FROM dbo.Test
Results:
Test1 test2 total
1 2 3