如何在 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

视图可以添加一个额外的字段,只选择前三个字符,并且不需要在每次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 来检查是否可行。

【讨论】:

我可以成功执行它,但最后我没有看到任何列显示我的第一列中的三个字符 您现在需要从视图中SELECT,而不是原始表。 啊一个问题,如果我删除任何列然后视图不起作用.. :( 好的,等我的电脑好了,我会试试你在编辑后的声明中所说的...... 您编辑的声明效果很好。竖起大拇指

以上是关于如何在 SQL Server 中将函数设置为默认值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XML 在 SQL 中将列默认值设置为今天的日期

如何在c ++中将前面的函数参数设置为其默认值?

在 SQL Server 中为默认值或绑定生成脚本

如何在SQL Server中将datetime值转换为yyyymmddhhmmss?

如何在 SQL Server 中将拆分函数转换为内联表值 udf?

在 C# 中将十六进制值从 SQL Server 转换为日期时间