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

关于MSSQL的XML查询模糊属性值
 SQL的XML查询如下,

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


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

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


------解决思路----------------------
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

------解决思路----------------------
XQuery 不支持 starts-with,只能从下面这些函数中想办法
针对 xml 数据类型的 XQuery 函数
------解决思路----------------------
SELECT r.c.value('@Id','NVARCHAR(Max)')
FROM @xml.nodes('Node') r(c)
WHERE r.c.value('@Id','NVARCHAR(Max)') LIKE '相关疾病%'

------解决思路----------------------
引用:
谢谢大家。我也找到个方法,分享下。

xml.value('(/Node/@Id[contains(.,"相关疾病")]/..)[1]', 'nvarchar(100)')


学习了
------解决思路----------------------
contains是包含不是开头,<Node Id="a相关疾病"> 也匹配了!