在where语句中使用@变量的列表



我试图使用变量的值从我的地方语句的其他地方传递,但我在语法上挣扎。

我有一个正在传递的字段其中包含的值实际上是一个列表

即@Var1,其中传递的值是AA','BB','CC(即缺少前导'和尾部')

我想在我的where语句中使用这个值作为列表eg

where 
field1 IN @Var1

ie -我想要的实际结果是

where
field1 IN ('AA','BB','CC')

我无法控制正在通过的内容(即AA','BB','CC将始终缺少前导和尾随'),那么我如何在WHERE中的in子句中使用该信息?

我似乎遇到了关于使用'

的语法问题我希望这是有意义的,这不是最容易解释的事情,而且它对我来说还是相对较新的

在上面的评论中有一个我的方法的例子:

CREATE PROCEDURE test_r(@x varchar(4000))
AS
BEGIN
DECLARE @t TABLE (keys NVARCHAR(10))
DECLARE @sql_xml XML = CAST('<root><X>'+REPLACE(@x, char(39)+','+char(39), '</X><X>') + '</X></root>' AS XML)
INSERT INTO @t(keys)
SELECT f.x.value('.', 'VARCHAR(10)') AS y
FROM @sql_xml.nodes('/root/X') f(x)

SELECT *
-- FROM [MyTable] m INNER JOIN...
FROM @t
END
GO
DECLARE @x AS nvarchar(4000) = 'AA' + char(39) + ',' + char(39) + 'BB' + char(39) + ',' + char(39) + 'CC'
EXEC test_r @x

根据你要处理的查询结果,你可能想要创建一个函数而不是一个过程。

相关内容

  • 没有找到相关文章

最新更新