关于MSSQL的XML查询模糊属性值

wcl1986_1 2015-08-07 02:05:08
SQL的XML查询如下,

xml.value('(/Node[@Id="相关疾病"])[1]', 'nvarchar(max)') AS '患者相关疾病'


需求是这样的:Node的Id并非固定,但以‘相关疾病’开头,后跟不定的字符。

我想要查询Id属性以‘相关疾病’开头的Node。XPath如何写?

...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcl1986_1 2015-09-06
  • 打赏
  • 举报
回复
引用 6 楼 Tiger_Zhao 的回复:
contains是包含不是开头,<Node Id="a相关疾病"> 也匹配了!
这样对我也满足要求。你若需要StartWith,可用SubString来做。
Tiger_Zhao 2015-08-07
  • 打赏
  • 举报
回复
contains是包含不是开头,<Node Id="a相关疾病"> 也匹配了!
RICHEER COCA 2015-08-07
  • 打赏
  • 举报
回复
引用 4 楼 wcl1986_1 的回复:
谢谢大家。我也找到个方法,分享下。

xml.value('(/Node/@Id[contains(.,"相关疾病")]/..)[1]', 'nvarchar(100)')
学习了
wcl1986_1 2015-08-07
  • 打赏
  • 举报
回复
谢谢大家。我也找到个方法,分享下。

xml.value('(/Node/@Id[contains(.,"相关疾病")]/..)[1]', 'nvarchar(100)')
chen357313771 2015-08-07
  • 打赏
  • 举报
回复
SELECT r.c.value('@Id','NVARCHAR(Max)')
FROM @xml.nodes('Node') r(c)
WHERE r.c.value('@Id','NVARCHAR(Max)') LIKE '相关疾病%'
Tiger_Zhao 2015-08-07
  • 打赏
  • 举报
回复
XQuery 不支持 starts-with,只能从下面这些函数中想办法
针对 xml 数据类型的 XQuery 函数
Tiger_Zhao 2015-08-07
  • 打赏
  • 举报
回复
DECLARE @xml xml
SET @xml = N'<Node Id="相关">123</Node><Node Id="相关疾病a">abc</Node>'

SELECT @xml.value('(/Node[substring(@Id,1,4)="相关疾病"])[1]', 'nvarchar(max)') AS '患者相关疾病'


患者相关疾病
------------
abc

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧