我试图使用变量的值从我的地方语句的其他地方传递,但我在语法上挣扎。
我有一个正在传递的字段其中包含的值实际上是一个列表
即@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
根据你要处理的查询结果,你可能想要创建一个函数而不是一个过程。