当前位置: 代码迷 >> Sql Server >> sql server 2005 xml查询解决思路
  详细解决方案

sql server 2005 xml查询解决思路

热度:45   发布时间:2016-04-27 12:02:27.0
sql server 2005 xml查询
实例:<title lang="en">Everyday Italian</title><title lang="en">XQuery Kick Start</title>
以上xml
需要取出文本 Everyday Italian XQuery Kick Start 
如果不知道标签名称的情况下,把标签都过滤掉,取出以上文本,改怎么查呢。。。。。

------解决方案--------------------
SQL code
DECLARE @x XML SET @x='<title lang="en">Everyday Italian</title><title lang="en">XQuery Kick Start</title>'SELECT T.c.value('(.)[1]','VARCHAR(50)') AS en   from  @x.nodes('title') T(c)/*en--------------------------------------------------Everyday ItalianXQuery Kick Start(2 行受影响)*/
------解决方案--------------------
探讨

现在的情况是不知道任何节点名称 可能是任意的xml文档

------解决方案--------------------
SQL code
DECLARE @x XML='<title lang="en">Everyday Italian</title><title lang="en">XQuery Kick Start</title>'SELECT @x.query('/title/text()[1]')/*Everyday ItalianXQuery Kick Start*/SELECT t.c.value('.[1]','varchar(50)')FROM @x.nodes('title')T(c)/*Everyday ItalianXQuery Kick Start*/
------解决方案--------------------
探讨

如果查询属性 lang="en" 的节点中的文本呢 过滤掉标签

------解决方案--------------------
探讨

现在只知道属性lang=‘en’ 不知道节点信息

------解决方案--------------------
SQL code
DECLARE @x XML SET @x='<title lang="en">Everyday Italian</title><title2 lang="en">XQuery Kick Start</title2>'SELECT T.c.value('.[1]','VARCHAR(50)') AS en   from  @x.nodes('*[@lang="en"]') T(c)
  相关解决方案