Я выполняю запрос к столбцу типа данных XML в SQL Server 2012. Пример данных:
<ns:Resume xmlns:ns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume">
<ns:Address>
<ns:Addr.Type>Home</ns:Addr.Type>
<ns:Addr.Street>567 3rd Ave</ns:Addr.Street>
<ns:Addr.Location>
<ns:Location>
<ns:Loc.CountryRegion>US </ns:Loc.CountryRegion>
<ns:Loc.State>MI </ns:Loc.State>
<ns:Loc.City>Saginaw</ns:Loc.City>
</ns:Location>
</ns:Addr.Location>
<ns:Addr.PostalCode>53900</ns:Addr.PostalCode>
</ns:Address>
</ns:Resume>
Я использовал эту ссылку, чтобы сначала вернуть фамилию, но теперь я хочу вернуть всех кандидатов из Чикаго и отдельных штатов, найденных во всех резюме.
Для всех кандидатов из Чикаго я использую следующий код, но он всегда возвращает имена столбцов, хотя значение существует. Вы можете помочь мне?
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT
JobCandidateID,
T.c.value('(ns:Name/ns:Name.First)[1]', 'nvarchar(100)') +N' '+
T.c.value('(ns:Name/ns:Name.Last)[1]', 'nvarchar(100)') as [First & Last Name],
T.c.value('(ns:Address/ns:Addr.Location/ns:Location/ns:Loc.City)[1]', 'nvarchar(100)') as [City Address],
T.c.value('(ns:Employment/ns:Emp.Location/ns:Location/ns:Loc.City)[1]', 'nvarchar(100)') as [City Employment]
FROM
HumanResources.JobCandidate
CROSS APPLY
[Resume].nodes('/ns:Resume') AS T(c)
where [Resume].exist('/ns:Resume/ns:Address/ns:Addr.Location/ns:Location[ns:Loc.City="Chicago"]')=1;