SQL SERVER中XML命名空间

有XML如下:

CREATE TABLE #a
(params XML)


INSERT INTO #a
        ( params )
VALUES  ( '<groupchkorderinforeq>
  <msgbody xmlns="http://www.xxxx.net/ngcrm/">
    <custinfo>
      <groupsubsinfo>
        <productcode>202014111101</productcode>
        <member>
          <opttype>0</opttype>
          <membermobile>13920130005</membermobile>
          <membernum />
          <membername>name0005</membername>
          <memtype />
          <prodchinfolist>
            <prodchinfo>
              <optype>0</optype>
              <prodid>prod.10000001000884</prodid>
              <payflag>0</payflag>
              <efftype>0</efftype>
            </prodchinfo>
          </prodchinfolist>
        </member>
      </groupsubsinfo>
    </custinfo>
  </msgbody>
</groupchkorderinforeq>'
          )

msgbody节点声名了命名空间,用平常的查询语句是查不到数据的

SELECT params.value('(/groupchkorderinforeq/msgbody/custinfo/groupsubsinfo/member/membermobile)[1]','nvarchar(1000)')
FROM #a

这时候我们要先用到WITH xmlnamespaces语句先声名一个命名空间,才能取到命名空间节点的值:

;WITH xmlnamespaces(
'http://www.xxxx.net/ngcrm/' as ns
)
SELECT  params,params.value('(/groupchkorderinforeq/ns:msgbody/ns:custinfo/ns:groupsubsinfo/ns:member/ns:membermobile)[1]','nvarchar(1000)')
FROM #a

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值