我想提取<Page_No>10</Page_No>
之间的页码,即检索10。
文字就像
<root>
<Image>
<File_image>07Feb13Kol030.jpg</File_image>
<Page_no>10</Page_no>
<Logo>N</Logo>
<Photo>N</Photo>
<Color>B</Color>
</Image>
</root>
这不起作用。只返回FIRST两个字符。
select
substring(convert(varchar(max),fileimage),charindex(convert(varchar(max),fileimage),'Page_no')+8,2)
from mytable
请帮忙
答案 0 :(得分:1)
尝试使用CROSS APPLY
- 这是模型帮助:
SELECT
x.value('(Page_no)[1]', 'int') AS 'Page_no'
FROM XMLTable x
CROSS APPLY x.myXMLField.nodes('/root/Image')
n(x)
这是SQL Fiddle。根据XML的完整结构,您可能需要将.nodes('/')更改为父节点。
如果有帮助,我已更新我的答案以包含您的字段名称。
祝你好运。答案 1 :(得分:0)
根据Janosch Worschitz,TSQL已经XQuery support since 2005,因此不要在XML上执行substring
和其他奇怪的事情,请尝试以下方法:
SELECT
Page = item.value'(//Page_no), INT)
FROM @XML.nodes('//root/Image') AS Facility(item);