2016-11-29 95 views
1

例如,我想将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不存在,而存在如果在更新之前。

有什么想法?

回答

4

你不能写这样的语句,因为解析器会在它让它运行之前检查整个语句以确保它是有效的。所以即使你使用IF,如果没有column1,整个陈述也是无效的。

可以使这项工作的方式是IF后使用动态SQL:

IF (SELECT COUNT ...) = 1 
    BEGIN 

    DECLARE @sql varchar(max) = 'UPDATE table1 SET column2 = column1'; 
    EXEC (@sql); 

    END 
+0

它的工作原理。谢谢! – Howard

相关问题