如何在 SQL Server 中将函数设置为默认值?
Posted
技术标签:
【中文标题】如何在 SQL Server 中将函数设置为默认值?【英文标题】:How to set a function as a default value in SQL Server? 【发布时间】:2014-09-27 22:43:17 【问题描述】:我遇到了麻烦请帮忙。
在搜索了我的问题后,我决定在这里发帖。
看看我下面的代码,告诉我是否可以将默认值设置为函数。
我想要做的是显示我的第一列数据的前三个字符,即Product_Name
。
例如,我的第一列有一个名称Xperia
,我希望它的前三个字符显示在我使用更改代码创建的最后一列中。
希望你明白我说的话。
Xperia ----> Xpe
代码是:
alter table dummy
add new_col varchar(250) default substring(first_column, 1, 3)
返回错误:
消息 128,第 15 级,状态 1,第 2 行 在此上下文中不允许使用名称“first_column”。有效表达式是常量、常量表达式和(在某些情况下)变量。不允许使用列名。
但是我可以将getdate()
函数设置为默认值。
谢谢
【问题讨论】:
我不明白你问题的最后一部分。您说“我如何将 getdate() 函数设置为默认值”,但我看不出这与添加基于Product_Name
的字段有何关系?
哦,这是将函数设置为默认值的示例。它与此代码无关。如果您误导了,请见谅
【参考方案1】:
您为什么要更改表格?听起来您需要VIEW
。
视图可以添加一个额外的字段,只选择前三个字符,并且不需要在每次UPDATE
或INSERT
数据时更新。例如:
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 来检查是否可行。
【讨论】:
我可以成功执行它,但最后我没有看到任何列显示我的第一列中的三个字符 您现在需要从视图中SELECT
,而不是原始表。
啊一个问题,如果我删除任何列然后视图不起作用.. :(
好的,等我的电脑好了,我会试试你在编辑后的声明中所说的......
您编辑的声明效果很好。竖起大拇指以上是关于如何在 SQL Server 中将函数设置为默认值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在SQL Server中将datetime值转换为yyyymmddhhmmss?