在sql中if else的错误

时间:2013-10-16 22:46:48

标签: sql sql-server sql-server-2008

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

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

错误 - 列名称'FAR'无效。

我正在使用正确的数据库和右表。那么,为什么会这样呢?

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

4 个答案:

答案 0 :(得分:2)

这是真正的代码:

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

END

答案 1 :(得分: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

答案 2 :(得分:0)

BEGIN声明

需要END / IF
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';

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

编辑:

使用where子句而不是IF块。

答案 3 :(得分:0)

在您的情况下,您正在检查列名称而不是该特定列的值。我建议你尝试动态sql。这个link可能很有用。 据我了解,如果您的@Vr = 'FAR'然后更新字段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

单引号'的数量非常重要