Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 如何返回元素属性值_Sql_Sql Server_Tsql_Xquery Sql - Fatal编程技术网

Sql 如何返回元素属性值

Sql 如何返回元素属性值,sql,sql-server,tsql,xquery-sql,Sql,Sql Server,Tsql,Xquery Sql,下面是一个示例,我尝试返回value属性值: IF OBJECT_ID(N'tempdb.dbo.#XMLwithOpenXML') IS NOT NULL DROP TABLE #XMLwithOpenXML; CREATE TABLE #XMLwithOpenXML ( [XMLData] [XML] NULL , [LoadedDateTime] [DATETIME] NULL, ); INSERT INTO #XMLwithOpenX

下面是一个示例,我尝试返回value属性值:

IF OBJECT_ID(N'tempdb.dbo.#XMLwithOpenXML') IS NOT NULL
    DROP TABLE #XMLwithOpenXML;

CREATE TABLE #XMLwithOpenXML
    (
      [XMLData] [XML] NULL ,
      [LoadedDateTime] [DATETIME] NULL,
    );

INSERT  INTO #XMLwithOpenXML
        ( XMLData
        )
VALUES  ( '<SupplyWeb_Data>
  <PurchaseOrder>
    <PO_Header>
      <status value="stat" />
      <po_number value="PO123" />
    </PO_Header>
    <PO_Detail>
      <cust_part_no value="A123" />
      <cust_part_desc value="A123 Desc" />
    </PO_Detail>
    <PO_Detail>
      <cust_part_no value="B123" />
      <cust_part_desc value="B123 Desc" />
    </PO_Detail>
  </PurchaseOrder>
</SupplyWeb_Data>'
        );

SELECT  T2.Loc.value('(/cust_part_no/@Value)[1]', 'varchar(255)') AS cust_part_no ,
        T2.Loc.value('(/cust_part_desc/@Value)[1]', 'varchar(255)') AS cust_part_desc
FROM    #XMLwithOpenXML
        CROSS APPLY XMLData.nodes('/SupplyWeb_Data/PurchaseOrder/PO_Detail')
        AS T2 ( Loc ); 

我错过了一些简单的东西,但我想不出来。我想我需要使用values函数,但它返回null。

XQuery区分大小写,所以value不是value和add。之前/客户部分


聪明的家伙
SELECT T2.Loc.value('(./cust_part_no/@value)[1]', 'varchar(255)')   AS cust_part_no 
      ,T2.Loc.value('(./cust_part_desc/@value)[1]', 'varchar(255)') AS cust_part_desc
FROM #XMLwithOpenXML x
CROSS APPLY XMLData.nodes('/SupplyWeb_Data/PurchaseOrder/PO_Detail')AS T2(Loc);