【发布时间】:2016-12-14 04:24:13
【问题描述】:
我有下面一段 XML 作为表中 XML 列的一部分,比如 MyTable
<policystatusdetail id="XXXXXXXXXXXXXXX">
<CurrentUser>ABCDEFG</CurrentUser>
<LastModifiedDateTime>2016-04-02T17:03:01.761</LastModifiedDateTime>
<PolicyStatus>Quote-New-Pending</PolicyStatus>
</policystatusdetail>
我只想提取 PolicyStatus 作为列。
我正在使用以下查询
Select x.r.value('@PolicyStatus','varchar(500)') as PolicyStatus
from
(Select cast(XMLData as XML) XMLData from Mytable) s
cross apply s.XMLData.nodes('session/data/policyAdmin/policyStatusdetail') as x(r)
但它返回零行。有人可以帮忙吗?
【问题讨论】:
-
这可能是案例的问题。如果您的 xml 看起来像
policystatusdetail,则需要查找节点policystatusdetail,而不是policyStatusdetail。另外,PolicyStatus[1],而不是@PolicyStatus。使用您当前使用的内容,它将在 policystatusdetail 节点中查找属性“PolicyStatus”(例如,要查找“id”,您将使用@id)。 -
嗨 Chaitanya,因为你是新来的(顺便说一句:欢迎!)请允许我一个提示:非常感谢你说 谢谢(你放了一个答案),但在(最佳)答案的投票计数器下方勾选接受检查会更友好。这将 1) 将此问题标记为已解决 2) 让追随者更容易找到最佳解决方案 3) 向回答者支付积分和 4) 向您支付积分。一旦您自己越过了 15 点边界,您还被要求对贡献进行投票。这是说谢谢的方式。编码快乐!
标签: sql sql-server xml tsql xpath