Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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 server 2008中选择此xml_Sql_Sql Server_Xml - Fatal编程技术网

如何在sql server 2008中选择此xml

如何在sql server 2008中选择此xml,sql,sql-server,xml,Sql,Sql Server,Xml,我需要选择xml中的所有guid节点。但是下面的代码只选择其中的第一个。怎么做 DECLARE @doc XML SET @doc = '<ArrayOfGuid xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <guid>96eecbe2-d645-465d-8232-c7f21e3c6bf8&l

我需要选择xml中的所有guid节点。但是下面的代码只选择其中的第一个。怎么做

DECLARE @doc XML

SET @doc = 
    '<ArrayOfGuid xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <guid>96eecbe2-d645-465d-8232-c7f21e3c6bf8</guid>
      <guid>38985702-0c0b-4e9c-bccb-af84ba4dd7ff</guid>
      <guid>67852205-092e-4db8-b31e-6f5d457db294</guid>
      <guid>92cf9106-445f-4b01-8259-613596b8a2a7</guid>
    </ArrayOfGuid>'

DECLARE @docHandle INT

EXEC sp_xml_preparedocument @docHandle OUTPUT,
     @doc

SELECT [guid]
FROM   OPENXML(@docHandle, '/ArrayOfGuid', 2)
       WITH
       ([guid] UNIQUEIDENTIFIER)
DECLARE@docxml
设置@doc=
'
96eecbe2-d645-465d-8232-c7f21e3c6bf8
38985702-0c0b-4e9c-bccb-af84ba4dd7ff
67852205-092e-4db8-b31e-6f5d457db294
92cf9106-445f-4b01-8259-613596b8a2a7
'
声明@docHandle INT
EXEC sp_xml_preparedocument@docHandle输出,
@医生
选择[guid]
来自OPENXML(@docHandle,'/ArrayOfGuid',2)
具有
([guid]唯一标识符)
结果只有一行:96EECBE2-D645-465D-8232-C7F21E3C6BF8


我需要全部4行。

可能有更好的方法,但这里有一种:

SELECT text as guid
FROM   OPENXML(@docHandle, '//ArrayOfGuid/guid/text()', 2)

您还可以使用SQL Server 2005及更新版本中的本机XQuery功能使用此方法:

SELECT
    Guids.value('(.)[1]', 'uniqueidentifier')
FROM 
    @doc.nodes('/ArrayOfGuid/guid') AS XTbl(Guids)
与较旧的
OPENQUERY
方法相比,我总是更喜欢这种方法