2016-11-29 3 views
1

Например, я хочу скопировать column1 в столбец2. Так что я пробовал:Как проверить, существует ли столбец, а затем скопировать его?

IF(SELECT COUNT(1) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table1' AND COLUMN_NAME = 'column1') = 1 
UPDATE table1 SET column2 = column1 
GO; 

Сервер SQL жалуются, что column1 не существует, а есть IF перед UPDATE.

Любая идея?

ответ

4

Вы не можете написать заявление, подобное этому, потому что анализатор будет проверять весь оператор, чтобы убедиться, что он действителен, прежде чем он позволит ему запустить. Поэтому, даже если вы используете IF, весь оператор недействителен, если нет column1.

, как вы можете сделать эту работу, чтобы использовать динамический SQL после IF:

IF (SELECT COUNT ...) = 1 
    BEGIN 

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

    END 
+0

Он работает. Благодаря! – Howard

Смежные вопросы