Sql server SQL Server:如何检查xml节点的元素属性是否包含特定字符串?

Sql server SQL Server:如何检查xml节点的元素属性是否包含特定字符串?,sql-server,xml,xpath,Sql Server,Xml,Xpath,我有一个这样的xml文档 <Students> <Student> <Node Type="http://www.something.com/xyz/10/abc/RollNumber" Value="Original=10000;Modified=100003445" /> <Node Type="http://www.something.com/xyz/10/abc/SerialNumber"

我有一个这样的xml文档

<Students>
  <Student>
    <Node Type="http://www.something.com/xyz/10/abc/RollNumber" 
          Value="Original=10000;Modified=100003445" />
    <Node Type="http://www.something.com/xyz/10/abc/SerialNumber" 
          Value="Original=10000;Modified=172777" />
    <Node Type="http://www.something.com/xyz/10/abc/Stream" 
          Value="Original=CS;Modified=EC" />
  </Student>
</Students>
我的问题是url部分可能会更改,因此我希望根据一些条件匹配它,如

@Type = "%Stream"


可能吗?

SQL中的xpath引擎支持contains函数,因此您可以说:

SELECT
    @MyXML.value('(/Students/Student/Node[contains(@Type,"Stream")]/@Value)[1]',
                 'varchar(100)') 
    AS ChangedValue
然而,不幸的是,最明显的结尾是xpath 2.0函数,而SQL引擎不提供该函数,因此,如果您想测试以Stream结尾的字符串,您必须按照以下说明进行测试:


SQL中的xpath引擎支持contains函数,因此您可以说:

SELECT
    @MyXML.value('(/Students/Student/Node[contains(@Type,"Stream")]/@Value)[1]',
                 'varchar(100)') 
    AS ChangedValue
然而,不幸的是,最明显的结尾是xpath 2.0函数,而SQL引擎不提供该函数,因此,如果您想测试以Stream结尾的字符串,您必须按照以下说明进行测试:


谢谢。解决了我的问题。非常感谢。解决了我的问题。
SELECT
    @MyXML.value('(/Students/Student/Node[contains(@Type,"Stream")]/@Value)[1]',
                 'varchar(100)') 
    AS ChangedValue
SELECT
    @MyXML.value
   ('(/Students/Student/Node["Stream"
                = substring(@Type, string-length(@Type)-5)]/@Value)[1]',
     'varchar(100)') 
    AS ChangedValue