【问题标题】:extracting xml value in sproc在 sproc 中提取 xml 值
【发布时间】:2012-06-13 14:55:57
【问题描述】:

假设我有以下 XML:

<root><test1>Hello</test1><test2>World</test2></root>

在我的存储过程中,我声明了一个这样的变量:

DECLARE @Stuff nvarchar(50)

如果将 XML 传递到存储过程中

@MyXml

解析传入的 XML 以获取元素 test1 中保存的值的语句是什么?

我使用的是 SQL Server 2008

【问题讨论】:

    标签: xml sql-server-2008 stored-procedures xquery


    【解决方案1】:

    您必须使用xml type 而不是nvarchar 类型,但转换很容易。然后可以这样查询:

    DECLARE @Stuff nvarchar(MAX) = '<root><test1>Hello</test1><test2>World</test2></root>'
    DECLARE @Xml xml = @Stuff
    SELECT @Xml.value('(/root/test1)[1]', 'nvarchar(50)') AS Test1
    

    有关详细信息,请参阅MSDN page on xml Data Type Methods

    【讨论】:

    • 如果 OP 只想在 &lt;test1&gt; 标签内发短信,真的不需要调用 .nodes() - 只需使用 SELECT @xml.value('(/root/test1)[1]', 'nvarchar(50)') 就可以了。
    • @marc_s - 好点。答案已更新。出于好奇,您从“/text()”中获得了什么?
    • 没什么 - 有时似乎需要“告诉” SQL Server XQuery 您想要将文本包含在 XML 标记中 - 但在这里没有必要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2013-02-15
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多