【发布时间】:2021-03-31 19:00:52
【问题描述】:
我想在脚本顶部设置节点列表,然后检查它们是否在表中。 以下代码不会抛出错误,但逻辑不起作用。当列表中的节点之一存在时,它不会打印消息。
DECLARE @nodeId nvarchar(50)
SET @nodeId = 'SomeNodeID, SomeOtherNodeID'
IF EXISTS (SELECT NodeId FROM dbo.tblNodeMaster WHERE NodeId in (@nodeId))
BEGIN
PRINT RTRIM(CONVERT(varchar(30), GETDATE())) + ' node exists.'
RETURN
END
使用以下不带变量的代码可以正常工作。当列表中的任何节点存在时,它将打印消息。
IF EXISTS (SELECT NodeId FROM dbo.tblNodeMaster WHERE NodeId in ('SomeNodeID', 'SomeOtherNodeID'))
BEGIN
PRINT RTRIM(CONVERT(varchar(30), GETDATE())) + ' node exists.'
RETURN
END
【问题讨论】:
-
您不能以这种方式对字符串使用
in- 这是一个set操作,它不会解析字符串。 -
您使用的是 MS SQL Server 吗? (上面的代码是非常具体的产品。)
-
是的 MS SQL Server
标签: sql-server tsql variables where-clause