[英]How to concatenate data from a SQL Server XML query?
我有一個SQL查詢,它返回下面的XML
<row>
<urlSegment>electronics</urlSegment>
<shortenedUrlSegment>0x58</shortenedUrlSegment>
</row>
<row>
<urlSegment>phones</urlSegment>
<shortenedUrlSegment>0x5AC0</shortenedUrlSegment>
</row>
<row>
<urlSegment>curvy-simplicity</urlSegment>
<shortenedUrlSegment>65546</shortenedUrlSegment>
</row>
等等
我想要的輸出是一個包含兩列(Url和ShortenedUrl)的表,其中數據以url方式連接,如下所示。
Url | ShortenedUrl
electronics/phones/curvy-simplicity | 0x58/0x5AC0/65546
等等
有人可以幫忙嗎?
最好的問候
你可以像這樣使用xquery:
select
stuff(
@data.query('
for $i in row/urlSegment return <a>{concat("/", $i)}</a>
').value('.', 'varchar(max)')
, 1, 1, '') as Url,
stuff(
@data.query('
for $i in row/shortenedUrlSegment return <a>{concat("/", $i)}</a>
').value('.', 'varchar(max)')
, 1, 1, '') as ShortenedUrl
試試這個:
DECLARE @input XML
SET @input = '<row>
<urlSegment>electronics</urlSegment>
<shortenedUrlSegment>0x58</shortenedUrlSegment>
</row>
<row>
<urlSegment>phones</urlSegment>
<shortenedUrlSegment>0x5AC0</shortenedUrlSegment>
</row>
<row>
<urlSegment>curvy-simplicity</urlSegment>
<shortenedUrlSegment>65546</shortenedUrlSegment>
</row>'
SELECT
Url = XRow.value('(urlSegment)[1]', 'varchar(100)'),
ShortenedUrl =XRow.value('(shortenedUrlSegment)[1]', 'varchar(100)')
FROM
@input.nodes('/row') AS XTbl(XRow)
.nodes()
為您提供了一系列XML片段,一個用於XML中的每個<row>
節點。 然后你可以“進入”那個<row>
元素並剔除包含的子元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.