gpt4 book ai didi

tsql - 在逗号上拆分sql参数

转载 作者:行者123 更新时间:2023-12-02 17:41:11 26 4
gpt4 key购买 nike

下面的代码适用于 'Main Stream' 或 'Premium' 作为参数,但是我试图让它对它们都适用,如下所示,但它不返回任何结果。我怎样才能使下面的代码工作?

declare @myParameter varchar(50)
SET @myParameter = 'Main Stream , Premium'


select * FROM sales
where myCategory IN (@myParameter)

最佳答案

你可以尝试类似的东西

--Split
DECLARE @textXML XML
DECLARE @data NVARCHAR(MAX),
@delimiter NVARCHAR(5)

SELECT @data = 'Main Stream , Premium',
@delimiter = ','

SELECT @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML)
SELECT T.split.value('.', 'nvarchar(max)') AS data
FROM @textXML.nodes('/d') T(split)

您可以将其存储在临时表中,或在 IN 子句中使用它。

对于@Hoy 的评论

你可以看看nodes() Method (xml Data Type)

The nodes() method is useful when you want to shred an xml data typeinstance into relational data. It allows you to identify nodes thatwill be mapped into a new row.

另外,看看 xml Data Type Methods

然后您可以将其用作

select * 
FROM sales
where myCategory IN (
SELECT T.split.value('.', 'nvarchar(max)')
FROM @textXML.nodes('/d') T(split)
)

关于tsql - 在逗号上拆分sql参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20465136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com