我需要在Microsoft SQL Server Management 2008中从XML创建一个表。以下创建了我需要的表,但是我不知道Tab(Col)的作用。为了示例,简化了表和xml。有人可以向我解释Tab(Col)正在做什么吗?感谢
注意:这是按原样运行的。只需要一个概念性的解释。
DECLARE @xml XML
SET @xml = '<Root>
<Order>
<customer_id> 1 </customer_id>
<credit> 1.03 </credit>
</Order>
<Order>
<customer_id> 2 </customer_id>
<credit> 1500585412.02 </credit>
</Order>
<Order>
<customer_id> 3 </customer_id>
<credit> 10.25 </credit>
</Order>
<Root>'
SELECT tab.col.value('customer_id[1]','INT') as customer_id,
tab.col.value('credit[1]','MONEY') as credit
INTO #temp_order
FROM @xml.nodes('/Root/Order') Tab(Col)
SELECT * FROM #temp_order
这将创建表#temp_order:
customer_id | credit
|
1 | 1.03
2 | 1500585412.02
3 | 10.25
答案 0 :(得分:3)
在FROM
声明中,Tab(Col)
为@xml.nodes('/Root/Order')
的结果指定了table and column aliases:
[ FROM { <table_source> } [ ,...n ] ]
<table_source> ::=
{
# ...
| @variable.function_call ( expression [ ,...n ] ) [ [ AS ] table_alias ] [ (column_alias [ ,...n ] ) ]
}
这会将它们命名为可以将它们称为表Tab
,其中包含1列,Col
。
SELECT tab.col.value(-- ...
-- ^^^ ^^^
也可以使用可选的AS
关键字编写:
FROM @xml.nodes('/Root/Order') AS Tab(Col)