Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
使用XQuery从sql server XML列中提取适当的数据_Sql_Xml_Xquery Sql - Fatal编程技术网

使用XQuery从sql server XML列中提取适当的数据

使用XQuery从sql server XML列中提取适当的数据,sql,xml,xquery-sql,Sql,Xml,Xquery Sql,我在尝试从XML类型列获取正确数据时遇到问题: "<"ArrayOfAccountInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.Balance.com/"> "<"AccountInformation> "<"AccountNumber xmln

我在尝试从XML类型列获取正确数据时遇到问题:

"<"ArrayOfAccountInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.Balance.com/">
  "<"AccountInformation>
    "<"AccountNumber xmlns="https://Safouenmzah.com/">0100000000"<"/AccountNumber>
     "<"OutstandingAmount xmlns="https://Safouenmzah.com/">-909.55"<"/OutstandingAmount>
     "<"LastBilledAmount xmlns="https://Safouenmzah.com/" />
     "<"LastPaidDate xmlns="https://Safouenmzah.com/" />
    "<"Severance xmlns="https://Safouenmzah.com/" />
   "<"PaymentAmount xmlns="https://Safouenmzah.com/" />
    "<"DistributedAmount xmlns="https://Safouenmzah.com/">$"<"/DistributedAmount>
   "<"AccountInfo xmlns="https://Safouenmzah.com/">Safouen Mzah  - Residential"<"/AccountInfo>
 "<"/AccountInformation>
"<"/ArrayOfAccountInformation>

谁能帮我一下吗?

我终于明白了

declare  @XML XML;


set @XML = '
"<"ArrayOfAccountInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.Balance.com/">
"<"AccountInformation>
"<"AccountNumber xmlns="https://Safouenmzah.com/">0100000000"<"/AccountNumber>
 "<"OutstandingAmount xmlns="https://Safouenmzah.com/">-909.55"<"/OutstandingAmount>
 "<"LastBilledAmount xmlns="https://Safouenmzah.com/" />
 "<"LastPaidDate xmlns="https://Safouenmzah.com/" />
"<"Severance xmlns="https://Safouenmzah.com/" />
"<"PaymentAmount xmlns="https://Safouenmzah.com/" />
"<"DistributedAmount xmlns="https://Safouenmzah.com/">$"<"/DistributedAmount>
"<"AccountInfo xmlns="https://Safouenmzah.com/">Safouen Mzah  - Residential"    <"/AccountInfo>
"<"/AccountInformation>
"<"AccountInformation>
"<"AccountNumber xmlns="https://Safouenmzah.com/">0200000000"<"/AccountNumber>
 "<"OutstandingAmount xmlns="https://Safouenmzah.com/">-908.55"<"/OutstandingAmount>
 "<"LastBilledAmount xmlns="https://Safouenmzah.com/" />
 "<"LastPaidDate xmlns="https://Safouenmzah.com/" />
"<"Severance xmlns="https://Safouenmzah.com/" />
"<"PaymentAmount xmlns="https://Safouenmzah.com/" />
"<"DistributedAmount xmlns="https://Safouenmzah.com/">$"<"/DistributedAmount>
"<"AccountInfo xmlns="https://Safouenmzah.com/">Safouen Mzah  - Expat"<"/AccountInfo>
"<"/AccountInformation>
"<"/ArrayOfAccountInformation>
'

;WITH XMLNAMESPACES ('http://www.Balance.com/' AS ns)
-- To get the outstanding amount of the first Account from the returned array
SELECT @XML.value('(/*[1]/*[1]/*[2])', 'varchar(200)') As OutstandingAmount1
-- To get the outstanding amount of the second Account from the returned array
SELECT @XML.value('(/*[1]/*[2]/*[2])', 'varchar(200)') As OutstandingAmount2

OutstandingAmount1
-909.55
OutstandingAmount2
-908.55
您可以使用节点分解XML并在一个结果集中获取值

使用xmlnamespaces'https://Safouenmzah.com/"作为一名中国人,, 违约'http://www.Balance.com/' 选择T.X.value'ns:OutstandingAmount/text[1],'varchar200' 从@XML.nodes'/ArrayOfAccountInformation/AccountInformation'作为TX
如果您只是希望查询不是-xmlResult.value'/ns:ArrayOfAccountInformation[1]AccountNumber[1],“varchar8000”的账号,我相信@GarethD已经说出了所有需要说明的内容……我尝试如下:-使用XMLNAMESPACES从XML列节点提取分解值;使用XMLNAMESPACES作为ns选择xmlResult.value'/ns:ArrayOfAccountInformation[1]AccountNumber[1],'varchar8000'作为[dbo].[BalanceInquiry\u Transactions\u Tracker]的AcctInfo,其中BanlanceInquiry\u Transc\u ID=4,我收到以下错误消息:您好,有什么想法吗?谢谢Mikael Erikson!
declare  @XML XML;


set @XML = '
"<"ArrayOfAccountInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.Balance.com/">
"<"AccountInformation>
"<"AccountNumber xmlns="https://Safouenmzah.com/">0100000000"<"/AccountNumber>
 "<"OutstandingAmount xmlns="https://Safouenmzah.com/">-909.55"<"/OutstandingAmount>
 "<"LastBilledAmount xmlns="https://Safouenmzah.com/" />
 "<"LastPaidDate xmlns="https://Safouenmzah.com/" />
"<"Severance xmlns="https://Safouenmzah.com/" />
"<"PaymentAmount xmlns="https://Safouenmzah.com/" />
"<"DistributedAmount xmlns="https://Safouenmzah.com/">$"<"/DistributedAmount>
"<"AccountInfo xmlns="https://Safouenmzah.com/">Safouen Mzah  - Residential"    <"/AccountInfo>
"<"/AccountInformation>
"<"AccountInformation>
"<"AccountNumber xmlns="https://Safouenmzah.com/">0200000000"<"/AccountNumber>
 "<"OutstandingAmount xmlns="https://Safouenmzah.com/">-908.55"<"/OutstandingAmount>
 "<"LastBilledAmount xmlns="https://Safouenmzah.com/" />
 "<"LastPaidDate xmlns="https://Safouenmzah.com/" />
"<"Severance xmlns="https://Safouenmzah.com/" />
"<"PaymentAmount xmlns="https://Safouenmzah.com/" />
"<"DistributedAmount xmlns="https://Safouenmzah.com/">$"<"/DistributedAmount>
"<"AccountInfo xmlns="https://Safouenmzah.com/">Safouen Mzah  - Expat"<"/AccountInfo>
"<"/AccountInformation>
"<"/ArrayOfAccountInformation>
'

;WITH XMLNAMESPACES ('http://www.Balance.com/' AS ns)
-- To get the outstanding amount of the first Account from the returned array
SELECT @XML.value('(/*[1]/*[1]/*[2])', 'varchar(200)') As OutstandingAmount1
-- To get the outstanding amount of the second Account from the returned array
SELECT @XML.value('(/*[1]/*[2]/*[2])', 'varchar(200)') As OutstandingAmount2

OutstandingAmount1
-909.55
OutstandingAmount2
-908.55