J'ai essayé de comprendre comment récupérer un nœud enfant basé sur un nœud parent en utilisant SQL . Ce que j'ai essayé jusqu'à présent, c'est:
PostalCode --------- 011369 01136229 01136255
Afin d'obtenir les noms de rue, j'ai utilisé la requête ci-dessous qui fonctionne bien:
select xx.value(N'(PostalCode)[1]', N'nvarchar(50)') AS PostalCode from @streets.nodes(N'/ArrayOfStreetEntity/StreetEntity/PostalNumbers/PostalNo') AS XTbl(xx) where xx.value(N'(/ArrayOfStreetEntity/StreetEntity/Name)[1]', 'varchar(max)')='Street name 1'
3 Réponses :
Merci! Ça a marché. Je ne peux pas voter pour la réponse, mais j'accepterai comme solution.
Spécifiez StreetEntity dans le chemin des nœuds et remplacez le chemin de la valeur par le premier code postal:
SELECT
xx.value(N'(PostalNumbers/PostalNo/PostalCode)[1]', N'nvarchar(50)') AS PostalCode
FROM @streets.nodes(N'/ArrayOfStreetEntity/StreetEntity') AS XTbl(xx)
WHERE xx.value(N'(Name)[1]', 'varchar(max)') = 'Street name 1';
Vous étiez proche:
SELECT xx.value(N'(PostalNumbers/PostalNo/PostalCode)[1]', N'nvarchar(50)') AS PostalCode FROM @streets.nodes(N'/ArrayOfStreetEntity/StreetEntity') AS XTbl(xx) WHERE xx.value(N'Name[1]', N'varchar(50)') = 'Street name 1';