我有一个名为RDCAlerts
的XML
列中包含以下数据的表:
<aliases>
<alias>
<aliasType>AKA</aliasType>
<aliasName>Pramod Singh</aliasName>
</alias>
<alias>
<aliasType>AKA</aliasType>
<aliasName>Bijoy Bora</aliasName>
</alias>
</aliases>
我想创建一个返回两行的查询-每个别名一行,我尝试了以下查询:
SELECT
AliasesValue.query('data(/aliases/alias/aliasType)'),
AliasesValue.query('data(/aliases/alias/aliasName)'),
FROM [RdcAlerts]
但它只返回一行:
AKA AKA | Pramod Singh Bijoy Bora
最佳答案
查看联机丛书中的.nodes()方法:
DECLARE @r TABLE (AliasesValue XML)
INSERT INTO @r
SELECT '<aliases> <alias> <aliasType>AKA</aliasType> <aliasName>Pramod Singh</aliasName> </alias> <alias> <aliasType>AKA</aliasType> <aliasName>Bijoy Bora</aliasName> </alias> </aliases> '
SELECT c.query('data(aliasType)'), c.query('data(aliasName)')
FROM @r r CROSS APPLY AliasesValue.nodes('aliases/alias') x(c)