[英]Parse XML using SQL Server
在nvarchar字段Description
我具有以下數據:
<p>Hello hi and a bunch of non-xml characters etc...</p>
<ul class='abc'>
<li><img src='1.jpg' /></li>
<li><img src='2.jpg' /></li>
</ul>
我想查詢這個“ xml”並得到以下結果:
<img src='1.jpg' />
<img src='2.jpg' />
因此,我編寫以下查詢:
SELECT
p.value('(.)[1]', 'nvarchar(100)')
FROM
(
SELECT
CAST(SUBSTRING(Description, CHARINDEX('<ul class=''abc''>', Description), LEN(Description)) AS XML) AS Xml
FROM Table
WHERE Description LIKE '%<ul class=''abc''>%'
) AS Result CROSS APPLY Xml.nodes('/ul/li') t(p)
但是我所有的結果都是NULL
。 看來我在XML選擇器中做錯了什么...我在做什么錯?
您需要使用query
而不是value
DECLARE @html NVARCHAR(MAX) = N'
<p>Hello hi and a bunch of non-xml characters etc...</p>
<ul class=''abc''>
<li><img src=''1.jpg'' /></li>
<li><img src=''2.jpg'' /></li>
</ul>'
SELECT
p.query('.')
FROM
(
SELECT CAST(SUBSTRING(@html, CHARINDEX('<ul class=''abc''>', @html), LEN(@html)) AS XML) AS XML
) AS Result
CROSS APPLY xml.nodes('/ul/li/img') t(p)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.