首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql中if Error中的错误

sql中if Error中的错误
EN

Stack Overflow用户
提问于 2013-10-16 22:46:48
回答 4查看 84关注 0票数 0

我在下面的查询中得到了一个错误。为什么?

代码语言:javascript
复制
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = FAR
UPDATE MyTable
SET TAR = @Vr

错误-无效的列名‘远’。

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

我的逻辑是如果列Far =变量Vr,那么更新列TAR。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-17 07:11:52

在您的示例中,您检查的是列名,而不是该特定列的值。我建议您尝试使用动态sql。这个链接可能很有用。据我所知,如果您的@Vr = 'FAR'然后更新字段,TAR会做其他的事情。在这种情况下,请参见下面的查询

代码语言:javascript
复制
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

单引号'的数量非常重要。

票数 0
EN

Stack Overflow用户

发布于 2013-10-16 22:50:14

这是真正的代码:

代码语言:javascript
复制
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = (select far from <table_name>)
Begin
    UPDATE MyTable
    SET TAR = @Vr

END
票数 2
EN

Stack Overflow用户

发布于 2013-10-17 07:32:44

代码语言:javascript
复制
    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 

或用例

代码语言:javascript
复制
  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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19415274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档