我RDCAlerts在XML名为type的列中有一个表,其中包含以下数据AliasesValue:
RDCAlerts
XML
AliasesValue
<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)