我有一个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
SQL 小提琴演示
试试这个:
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>
元素并找出包含的子元素。