0

我在下面的查询中收到错误。为什么 ?

DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = FAR
UPDATE MyTable
SET TAR = @Vr

错误 - 列名“FAR”无效。

我正在使用正确的数据库和正确的表。那么,为什么会发生这种情况?

我的逻辑是,如果 Column Far = variable Vr,则更新 Column TAR。

4

4 回答 4

2

This is the true code:

DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = (select far from <table_name>)
Begin
    UPDATE MyTable
    SET TAR = @Vr

END
于 2013-10-16T22:50:14.707 回答
2
    DECLARE @Vr varchar(50);
    SET @Vr = N'Infos';
   -- IF @Vr = FAR
    IF ( select Count(*) from mytable where ColumnFar =@Vr) >0
    BEGIN
    UPDATE MyTable
    SET TAR = @Vr where ColumnFar =@Var
    END
 ELSE
 BEGIN
 -- Goes your condition
 END 

或使用 CASE

  DECLARE @Vr varchar(50);
   SET @Vr = N'Infos';

UPDATE MyTable
       SET TAR =
                 CASE
                   WHEN ( @Vr = FAR)
                                   THEN 'FAR'
                   Else
                    NULL -- Or any other value you want.
                 END
于 2013-10-17T07:32:44.407 回答
0

You need BEGIN/END for your IF statement

DECLARE @Vr varchar(50);
SET @Vr = N'Infos';

UPDATE MyTable
SET TAR = @Vr
WHERE FAR = @vr

EDIT:

Use a where clause instead of an IF block.

于 2013-10-16T22:48:54.530 回答
0

在您的情况下,您正在检查列名而不是该特定列的值。我建议你尝试动态sql。此链接可能很有用。据我了解,如果您的 @Vr = 'FAR'then update 字段TAR做其他事情。在这种情况下,请参阅我的以下查询

DECLARE @SQL NVARCHAR(MAX)
DECLARE @valueToBeUpdatedInYourColumn nvarchar(100)
set @valueToBeUpdatedInYourColumn = 'this value will be your updated value'
SET @Vr = 'Infos';
IF @Vr = 'FAR'
   BEGIN
     SET @SQL = '

                 UPDATE MyTable
                 SET TAR= '''+@valueToBeUpdatedInYourColumn+'''
                '
      EXEC(@SQL)
   END
ELSE
   BEGIN
         ...
   END

单引号的个数'很重要

于 2013-10-17T07:11:52.217 回答