使用SQLServer解析XML
在nvarchar字段描述中,我有以下数据:使用SQLServer解析XML,sql,sql-server,xml,sql-server-2008,Sql,Sql Server,Xml,Sql Server 2008,在nvarchar字段描述中,我有以下数据: <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并获得以下
<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)
但是我所有的结果都是空的。似乎我的XML选择器有问题。。。我做错了什么?您需要使用查询而不是值
声明@html NVARCHARMAX=N'
你好,嗨,还有一堆非xml字符等等
'
选择
p、 查询''
从…起
选择CASTSUBSTRING@html,CHARINDEX,@html,LEN@html像XML一样的XML
结果
交叉应用xml.nodes'/ul/li/img'tp
您需要使用查询而不是值
声明@html NVARCHARMAX=N'
你好,嗨,还有一堆非xml字符等等
'
选择
p、 查询''
从…起
选择CASTSUBSTRING@html,CHARINDEX,@html,LEN@html像XML一样的XML
结果
交叉应用xml.nodes'/ul/li/img'tp