我有以下xml格式
<Request SearchType="CUSIPISIN">
<Identifiers>
<Identifier id="US04012VAA70"/>
<Identifier id="553061AA0"/>
</Identifiers>
</Request>
在我的sql server storage proc
中alter PROCEDURE [dbo].[Search]
@RequestXml XML
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SearchType varchar(50);
set @SearchType= @requestXml.value('(//Request/@SearchType)[1]', 'varchar(10)')
SELECT Tbl.Col.value('@id', 'VARCHAR(30)') AS tr
FROM @RequestXml.nodes('//Identifier') Tbl(Col)
end
如何创建一个从这个xml分隔的逗号,以便我可以使用IN子句的那一部分 像
select * from products where identifier in (US04012VAA70,553061AA0)
任何帮助都会得到很大的帮助
答案 0 :(得分:2)
如果您想将此数据放入IN
,我认为您需要创建动态代码。
但如果没有必要,你可以这样使用:
DECLARE @xml XML = N'
<Request SearchType="CUSIPISIN">
<Identifiers>
<Identifier id="US04012VAA70"/>
<Identifier id="553061AA0"/>
</Identifiers>
</Request>
'
DECLARE @table TABLE ( xmlData VARCHAR(30))
INSERT INTO @table
exec [dbo].[SearchByCusipIsinDealName] @xml
SELECT *
FROM products AS P
INNER JOIN @table AS T
ON T.xmlData = P.identifier