简体   繁体   English

在XQuery中使用交叉应用

[英]Using Cross Apply in XQuery

This is my store to process get data: 这是我用来处理获取数据的商店:

(PromotionSetup.query(''
for $PS in Setup/Include[@Type = ''''Product'''']/Value[text()]                                     
where contains($PS, ''''' + CAST(@productID AS NVARCHAR) + '_'''') or $PS = ''''' + CAST(@productID AS NVARCHAR) + '''''
return data($PS)         
'')).value(''(.)'', ''nvarchar(max)'') as InfoProductPromotion

And, this is my result: 而且,这是我的结果:

468908_3:2000; 468908_3:1000;

That result was compare 2 data in one line. 结果是在一行中比较2个数据。 So, i'm looking in the internet that using cross apply to detached data in 2 lines. 因此,我在互联网上寻找使用cross apply 2行中分离数据的信息。

This is a result i want: 这是我想要的结果:

468908_3:2000; 
468908_3:1000;

Unfortunately, i can't imagine how to using cross apply into Xquery. 不幸的是,我无法想象如何在Xquery中使用交叉应用。 Can someone can help me?? 有人可以帮我吗?

Check this sql statement if it can help : 检查此sql语句是否可以帮助您:

;WITH yourtable
     AS (SELECT '468908_3:2000; 468908_3:1000;' AS yourcolumn)

SELECT RTRIM(LTRIM(c1.value('.', 'varchar(100)')))
FROM   (SELECT CAST('<N>' + REPLACE(yourcolumn, ';', ';</N><N>')
                    + '</N>' AS XML)
        FROM   yourtable) t(c)
       CROSS APPLY c.nodes('/N') AS t1(c1)
WHERE  RTRIM(LTRIM(c1.value('.', 'varchar(100)'))) <> '' 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM