我在下面的查询中收到错误。为什么 ?
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = FAR
UPDATE MyTable
SET TAR = @Vr
错误 - 列名“FAR”无效。
我正在使用正确的数据库和正确的表。那么,为什么会发生这种情况?
我的逻辑是,如果 Column Far = variable Vr,则更新 Column TAR。
我在下面的查询中收到错误。为什么 ?
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = FAR
UPDATE MyTable
SET TAR = @Vr
错误 - 列名“FAR”无效。
我正在使用正确的数据库和正确的表。那么,为什么会发生这种情况?
我的逻辑是,如果 Column Far = variable Vr,则更新 Column TAR。
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
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
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.
在您的情况下,您正在检查列名而不是该特定列的值。我建议你尝试动态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
单引号的个数'
很重要