Sql 如何从xml值中获取值而不在select语句中提及其属性名称
下面的方法很好用。但我想动态地阅读它,而不需要属性或coulmn名称 示例xmlSql 如何从xml值中获取值而不在select语句中提及其属性名称,sql,sql-server,xml,sql-server-2008-r2,Sql,Sql Server,Xml,Sql Server 2008 R2,下面的方法很好用。但我想动态地阅读它,而不需要属性或coulmn名称 示例xml declare @xmlval xml='<ArrayOfCustomers> <Customer> <ItemId>1</ItemId> <Value>Mr Smith</Value> </Customer> <Customer> <ItemId>2
declare @xmlval xml='<ArrayOfCustomers>
<Customer>
<ItemId>1</ItemId>
<Value>Mr Smith</Value>
</Customer>
<Customer>
<ItemId>2</ItemId>
<Value>Mr Bloggs</Value>
</Customer>
</ArrayOfCustomers>'
以上方法很好。如何从xml值中获取值,而不在select语句中提及其属性名称
-所需的查询示例格式
例如:
SELECT
Cust.value('[0][1]', 'int') AS 'ItemID',
Cust.value('[1][1]', 'Varchar(50)') AS 'Customer Name'
或
在我们的例子中,我不知道输入@xmlval值的列或属性名。我想将xml值插入新表int,varchar50
谢谢,
Velsankar您可以通过*选择所有元素,然后通过[1]获取第一个元素,通过[2]获取第二个元素:
谢谢当列数或字段数未知时,是否可以获取值?使用动态SQL也可以,但您希望获取什么输出?通常,从SQL Server返回动态列数是不好的,因为我将在表列中获得一个xml值。我得把它当作桌子还回去。每一行可能有不同的xml值。因此,在执行时,只有我知道列的数量及其属性名。请告知如何获取表中的值之后,您是否在某些客户端应用程序中处理表?在SQL Server中您将很难做到这一点,使用适当的编程语言更容易做到这一点是的。好啊在客户端就可以了。
SELECT
Cust.value('[0][1]', 'int') AS 'ItemID',
Cust.value('[1][1]', 'Varchar(50)') AS 'Customer Name'
SELECT
Cust.value('[1]', 'int') AS 'ItemID',
Cust.value('[1]', 'Varchar(50)') AS 'Customer Name'
FROM
@xmlval.nodes('/ArrayOfCustomers/Customer') AS AOC(Cust)
select
Cust.value('*[1]', 'int') AS 'ItemID',
Cust.value('*[2]', 'Varchar(50)') AS 'Customer Name'
from @xmlval.nodes('/ArrayOfCustomers/Customer') as AOC(Cust)