Исходя из вашего XML, вы можете использовать этот XQuery SELECT
для извлечения ваших элементов из XML:
select
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/infringementNumber)[1]', 'VARCHAR(10)') 'InfringementNumber',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/issueAgency)[1]', 'VARCHAR(5)') 'Issue Agency',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/infringementType)[1]', 'VARCHAR(5)') 'Infringement Type',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/offenceEntity/offenceCode)[1]', 'INT') 'Offence Code',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/vehicleEntity/vehicleClass)[1]', 'INT') 'Vehicle Class',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/obligationNumber)[1]', 'VARCHAR(11)') 'Obligation Number'
Замените @input
на переменную или столбец, содержащий ваш XML (у меня естьиспользовал @input в качестве тестового стенда в своих тестах).
Вывод выглядит так:
InfringementNumber Issue Agency Infringement Type Offence Code Vehicle Class Obligation Number
1234567891 017 1A 7777 2 obligation1
И, конечно, вы также можете сделать INSERT INTO ....
и использовать вывод изэто SELECT
в качестве значений для вставки.
Обновление: если ваш столбец XML содержит несколько записей (из /InfringementEntity
внутри /ArrayOfInfringementEntity
), вам необходимо использовать SELECT
вот так:
SELECT
InfrEntity.value('(infringementNumber)[1]', 'VARCHAR(10)') 'InfringementNumber',
InfrEntity.value('(issueAgency)[1]', 'VARCHAR(5)') 'Issue Agency',
InfrEntity.value('(infringementType)[1]', 'VARCHAR(5)') 'Infringement Type',
InfrEntity.value('(offenceEntity/offenceCode)[1]', 'INT') 'Offence Code',
InfrEntity.value('(vehicleEntity/vehicleClass)[1]', 'INT') 'Vehicle Class',
InfrEntity.value('(obligationNumber)[1]', 'VARCHAR(11)') 'Obligation Number'
from
(yourXMLcolumn).nodes('/ArrayOfInfringementEntity/InfringementEntity') as ArrInfr(InfrEntity)