2014-09-27 187 views
0

我有麻烦请帮忙。如何在SQL Server中将函数设置为默认值?

寻找我的问题后,我决定发布在这里。

看看我的代码,并告诉我是否可以将默认值设置为函数。

我想要做的是显示我的第一列数据的前三个字符,它是Product_Name

例如,我的第一列有一个名称Xperia,而且我希望它的前三个字符显示在我使用alter code创建的最后一列中。

我希望你明白我说的话。

Xperia ----> Xpe 

代码是:

alter table dummy 
add new_col varchar(250) default substring(first_column, 1, 3) 

返回一个错误:

Msg 128, Level 15, State 1, Line 2
The name "first_column" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.

但是我可以设置getdate()功能作为默认值。

谢谢

+0

:(没有人回复 – 2014-09-27 22:50:41

+0

你只发布你的问题7分钟前!! – Tony 2014-09-27 22:51:49

+0

好吧,但我得到了我的最后两个问题在不到2分钟的反应堆栈溢出是非常活跃的网站..我明白 – 2014-09-27 22:52:53

回答

3

你为什么要改变表格?这听起来像你需要一个VIEW

视图可以添加一个额外的字段,只选择前三个字符,并且不需要每次更新时您都需要更新UPDATEINSERT数据。例如:

CREATE VIEW Table_With_Truncated_Product_Name 
AS 
SELECT *, LEFT(Product_Name, 3) AS truncated_product_name 
FROM Your_Table 

但是,如果你不想使用VIEW有可能使用Computed Column

在这种情况下,你会改变你的表并添加字段:

ALTER TABLE Your_Table ADD truncated_product_name AS LEFT(Product_Name, 3) 

虽然我没有在时刻访问SQL Server检查,将工作。

+0

请进一步阐述你的答案..我喜欢你所说的,但在一半.. – 2014-09-27 22:55:30

+0

我可以成功执行它,但我没有看到任何列最后显示从我的第一列三个字符 – 2014-09-27 23:09:54

+0

你现在会需要从视图中选择'SELECT',而不是原始表格。 – Tony 2014-09-27 23:11:14