Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql @mp:id是否总是按照XML文档的顺序排列?_Sql_Sql Server_Xml_Sql Server 2008_Sql Server Openxml - Fatal编程技术网

Sql @mp:id是否总是按照XML文档的顺序排列?

Sql @mp:id是否总是按照XML文档的顺序排列?,sql,sql-server,xml,sql-server-2008,sql-server-openxml,Sql,Sql Server,Xml,Sql Server 2008,Sql Server Openxml,我正在使用OPENXML解析一些xml。我需要从XML中获取一个标识,以了解节点的顺序 @mp:id是否总是有序的?我知道它们不是连续的,但它们至少是有序的吗 例如,下面的查询是否总是以与XML完全相同的顺序生成结果 SELECT row_number() OVER (ORDER BY OrderID) rn, StepID, CONVERT(varchar(max), CONVERT(VARBINARY(max), StepID), 2),

我正在使用OPENXML解析一些xml。我需要从XML中获取一个标识,以了解节点的顺序

@mp:id是否总是有序的?我知道它们不是连续的,但它们至少是有序的吗

例如,下面的查询是否总是以与XML完全相同的顺序生成结果

    SELECT  row_number() OVER (ORDER BY OrderID) rn, 
            StepID, CONVERT(varchar(max), CONVERT(VARBINARY(max), StepID), 2), 
            [ACTION]
    FROM    OPENXML(@idoc, 'descendant::step |descendant::compref', 2)
            WITH ([OrderID] INT '@mp:id',
                  [StepID] INT '@id',
                  [Action] VARCHAR(max) 'parameterizedString[1]')
    ORDER BY rn

或者@mp:id是一种元数据类型的东西,可以根据保存的方式按任何顺序排列?

您不能保证顺序正确。为此,您可以生成数字序列(例如带有列号的NF表),然后使用XPath with position()函数查询XML:

SELECT NF.Number,Order_id FROM NF
CROSS APPLY(SELECT Table.Row.value('@Id','int') Order_Id
    FROM @xml.nodes('//Root/Order[position()=sql:column("NF.Number")]') AS Table(Row))  AS XMLTable