IDs of badge elements inside training only
select tcvalue('.', 'int') ID from Qualifications q cross apply q.Criteria.nodes('//training[badge]/badge[@ID]/@ID') t(c)
IDs of badge elements anywhere (not just inside training )
select tcvalue('.', 'int') ID from Qualifications q cross apply q.Criteria.nodes('//badge[@ID]/@ID') t(c)
If the Criteria column is of type nvarchar , you can apply it to xml as:
select tcvalue('.', 'int') ID from Qualifications q cross apply (select convert(xml, q.Criteria) xmlCriteria) a cross apply a.xmlCriteria.nodes('//training[badge]/badge[@ID]/@ID') t(c)
i-one source share