2016-11-29 60 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

相關問題