我的`ALTER TABLE`语句出了什么问题?

时间:2016-01-30 06:43:06

标签: sql-server

我一直收到错误:

  

消息156,级别15,状态1,行2关键字附近的语法不正确   '为'。

我的代码

ALTER TABLE [SupplierDetails]

ADD [practice] varchar(300) as CONCATENATE(SupplierDescription, SupplierEmail)

4 个答案:

答案 0 :(得分:1)

我不知道任何名为CONCATENATE()的SQL Server函数,尽管有一个名为CONCAT()的函数。无论如何,您只需使用plus运算符即可实现:

ALTER TABLE [SupplierDetails]
ADD [practice] as (SupplierDescription + SupplierEmail)

正如this SO answer所提到的,您可能最好在SELECTUPDATE声明中处理连接。

答案 1 :(得分:0)

首先,CONCATENATE(SupplierDescription,SupplierEmail)这不是SQL服务器中的有效功能。

试试这个

ALTER TABLE [SupplierDetails]

ADD [practice] varchar(300) 

update SupplierDetails
set practice=SupplierDescription + SupplierEmail

ALTER TABLE [SupplierDetails]

ADD [practice] AS (SupplierDescription + SupplierEmail)

答案 2 :(得分:0)

试试这个。

ALTER TABLE [SupplierDetails]
ADD [practice] AS CONCAT(SupplierDescription,' ',SupplierEmail)

OR

ALTER TABLE [SupplierDetails]
ADD [practice] AS (SupplierDescription+SupplierEmail)

OR

ALTER TABLE [SupplierDetails]
ADD [practice] AS CONCAT(SupplierDescription,SupplierEmail)

答案 3 :(得分:-1)

我假设您要创建一个计算列,这很好。

问题是SQL Server没有名为CONCATENATE的函数,您需要使用+符号,或使用CONCAT()。为了使您的ALTER TABLE语句正确,您必须这样做:

如果您的SQL Server版本是2008 R2或更早版本,但不支持CONCAT()

ALTER TABLE SupplierDetails
ADD practice AS LEFT(SupplierDescription + SupplierEmail, 300);

如果您使用的是SQL Server 2012及更高版本:

ALTER TABLE SupplierDetails
ADD practice AS LEFT(CONCAT(SupplierDescription, SupplierEmail), 300);

请记住,必须保留计算列,这就是我添加LEFT(xxx, 300);的原因,以确保您的计算列不会超过300个字符。

请参阅此操作:

https://data.stackexchange.com/stackoverflow/query/429734/computed-column

相关问题