SQL SERVER中XML命名空间

有XML如下:

CREATE TABLE #a
(params XML)


INSERT INTO #a
        ( params )
VALUES  ( '
  
    
      
        202014111101
        
          0
          13920130005
          
          name0005
          
          
            
              0
              prod.10000001000884
              0
              0
            
          
        
      
    
  
'
          )

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

你可能感兴趣的:(Sql,Server)