我在下面的查询中得到了一个错误。为什么?
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = FAR
UPDATE MyTable
SET TAR = @Vr错误-无效的列名‘远’。
我正在使用正确的数据库和正确的表。那为什么会发生这种事?
我的逻辑是如果列Far =变量Vr,那么更新列TAR。
发布于 2013-10-17 07:11:52
在您的示例中,您检查的是列名,而不是该特定列的值。我建议您尝试使用动态sql。这个链接可能很有用。据我所知,如果您的@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单引号'的数量非常重要。
发布于 2013-10-16 22:50:14
这是真正的代码:
DECLARE @Vr varchar(50);
SET @Vr = N'Infos';
IF @Vr = (select far from <table_name>)
Begin
UPDATE MyTable
SET TAR = @Vr
END发布于 2013-10-17 07:32:44
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 或用例
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.
ENDhttps://stackoverflow.com/questions/19415274
复制相似问题