例如,我想将column1复制到column2。所以我试过了:
IF(SELECT COUNT(1) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table1' AND COLUMN_NAME = 'column1') = 1
UPDATE table1 SET column2 = column1
GO;
SQL Server抱怨column1不存在,而UPDATE之前有IF。
有什么想法吗?
答案 0 :(得分:4)
你不能写这样的语句,因为解析器会检查整个语句,以确保它在运行之前是有效的。因此,即使您使用IF,如果没有column1
,整个声明也无效。
你能做到这一点的方法是在IF之后使用动态sql:
IF (SELECT COUNT ...) = 1
BEGIN
DECLARE @sql varchar(max) = 'UPDATE table1 SET column2 = column1';
EXEC (@sql);
END