如何设置列等于(column1 * column2)的值

时间:2018-06-23 05:45:37

标签: c# sql sql-server

我是SQL Server Management Studio的新手,假设我在tbl_productcolumn1nchar(60)),column2({{1} }),并且在我的nchar(60)中,我希望它的值是(column3)的结果,我该怎么做?

我在列属性中看到了一个“公式”,但是我不确定如何在此处设置公式,这是屏幕截图:

enter image description here

注意:让我们将column1和column2的数据类型设置为column1 * column2

3 个答案:

答案 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;

Microsoft Docs link for Specify Computed Columns in a Table

答案 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