我一直收到错误:
消息156,级别15,状态1,行2关键字附近的语法不正确 '为'。
我的代码
ALTER TABLE [SupplierDetails]
ADD [practice] varchar(300) as CONCATENATE(SupplierDescription, SupplierEmail)
答案 0 :(得分:1)
我不知道任何名为CONCATENATE()
的SQL Server函数,尽管有一个名为CONCAT()
的函数。无论如何,您只需使用plus运算符即可实现:
ALTER TABLE [SupplierDetails]
ADD [practice] as (SupplierDescription + SupplierEmail)
正如this SO answer所提到的,您可能最好在SELECT
或UPDATE
声明中处理连接。
答案 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