我在下面的查询中收到错误。为什么?
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = FAR
UPDATE MyTable
SET TAR = @Vr
错误 - 列名称'FAR'无效。
我正在使用正确的数据库和右表。那么,为什么会这样呢?
我的逻辑是如果Column Far =变量Vr,则更新Column TAR。
答案 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
单引号'
的数量非常重要