sql server中导致错误的Xml查询

sql server中导致错误的Xml查询,sql,sql-server,xml,Sql,Sql Server,Xml,这是我的xml查询 declare @XML xml set @XML= '<ROOT> <Customers> <CustomerId>1111</CustomerId> <CompanyName>Sean Chai</CompanyName> <City>NY</City> </Customers> <Customers> <CustomerId>1112<

这是我的xml查询

declare @XML xml
set @XML=
'<ROOT>
<Customers>
<CustomerId>1111</CustomerId>
<CompanyName>Sean Chai</CompanyName>
<City>NY</City>
</Customers>
<Customers>
<CustomerId>1112</CustomerId>
<CompanyName>Tom Johnston</CompanyName>
<City>LA</City>
</Customers>
<Customers>
<CustomerId>1113</CustomerId>
<CompanyName>Institute of Art</CompanyName>
</Customers>
</ROOT>';

SELECT
R.Node('.').value('(/Customers/CustomerId/.)[1]','varchar(100)') AS CustomerID,
R.Node('.').value('(/Customers/CompanyName/.)[1]','varchar(100)') AS CompanyName
FROM @XML.nodes('/ROOT/Customers') R(Node)
我搜索了一下,但找不到
R.node
东西,请有人给我指点一下

我不理解
@XML.nodes('/ROOT/Customers')R(Node)


它在查询中有什么用

像这样更改查询并重试

SELECT
R.Node.value('(CustomerId/.)[1]','varchar(100)') AS CustomerID,
R.Node.value('(CompanyName/.)[1]','varchar(100)') AS CompanyName
FROM @XML.nodes('/ROOT/Customers')  R(Node)
首先,查询中存在语法错误。结果表的别名为R(Node),则无法将路径指定为R.Node(.)。
其次,您在查询中提到的路径是错误的(/Customers/CustomerId/)

Wow!你能解释一下我的问题中的错误吗?或者这是怎么回事。。谢谢你advance@user3449213,我已经用你的问题更新了答案,伙计!我将您的查询更改为
从@XML.nodes('/ROOT/Customers')R(Node)
中选择R.Node.value('(CustomerId/)[1]','varchar(100')作为CustomerId,R.Node.value('(CustomerId/),'varchar(100')作为CustomerId,R.Node.value('(CompanyName/)[1]','varchar作为CityName)!您能告诉我您的查询中的
[1]
是什么意思吗?这实际上是从您的查询中复制的:)。value()函数需要一个节点将其转换为特定类型。因为xpath CompanyName/。可能会导致多个节点,虽然我们只有一个节点,但我们需要告知如何使用第一个节点。所以我们需要提到[1]
SELECT
R.Node.value('(CustomerId/.)[1]','varchar(100)') AS CustomerID,
R.Node.value('(CompanyName/.)[1]','varchar(100)') AS CompanyName
FROM @XML.nodes('/ROOT/Customers')  R(Node)