我有一个XML,我想解析SQL服务器。这个XML有每个游戏相关的游戏列表和规则列表。我想作为TSQL解析XML文档
GameID RuleID RuleType IsSelected
380 16 0 TRUE
380 19 0 FALSE
380 17 0 FALSE
382 16 0 FALSE
382 19 0 TRUE
382 17 0 TRUE
我使用下述查询来获取输出的输出,但越来越重复,每场比赛相关联的规则列表的所有元素我的游戏ID。
SELECT
Game.value('GameID[1]','INT') AS GameID
,Game.value('IsSelected[1]','bit') AS GameSelected
,Rule1.value('(./RuleID/text())[1]','Int') AS RuleID
FROM @x.nodes('GameWorld/GameList/Game') TEMPTABLE(Game)
OUTER APPLY
Game.nodes('//RuleList/Rule') AS Rules(Rule1)
XML文档如下所述。该文件包含所有游戏的列表,每个游戏都有一个与之相关的规则列表。
<GameWorld xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GameList>
<Game>
<GameID>380</GameID>
<IsSelected>false</IsSelected>
<RuleList>
<Rule>
<RuleID>16</RuleID>
<RuleType>0</RuleType>
<IsSelected>true</IsSelected>
</Rule>
<Rule>
<RuleID>19</RuleID>
<RuleType>0</RuleType>
<IsSelected>false</IsSelected>
</Rule>
<Rule>
<RuleID>17</RuleID>
<RuleType>0</RuleType>
<IsSelected>false</IsSelected>
</Rule>
</RuleList>
</Game>
<Game>
<GameID>381</GameID>
<IsSelected>false</IsSelected>
<RuleList>
<Rule>
<RuleID>16</RuleID>
<RuleType>0</RuleType>
<IsSelected>true</IsSelected>
</Rule>
<Rule>
<RuleID>19</RuleID>
<RuleType>0</RuleType>
<IsSelected>false</IsSelected>
</Rule>
<Rule>
<RuleID>17</RuleID>
<RuleType>0</RuleType>
<IsSelected>false</IsSelected>
</Rule>
</RuleList>
</Game>
</GameList>
</GameWorld>