如何检查列是否存在然后复制它?

时间:2016-11-29 20:18:13

标签: sql-server

例如,我想将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。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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

你能做到这一点的方法是在IF之后使用动态sql:

IF (SELECT COUNT ...) = 1
  BEGIN

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

  END
相关问题