Как извлечь значения из столбца xml в таблице с помощью SQL Server

#sql #xml #sql-server-2008 #xquery

#sql #xml #sql-server-2008 #xquery

Вопрос:

Я пытаюсь извлечь значения из столбца XML в таблице в SQL Server. У меня есть эта таблица InsuranceEntity со столбцами InsuranceEntity_ID и EntityXML .

EntityXML Столбец содержит такие значения, как:

 <insurance insurancepartnerid="CIGNA" sequencenumber="1" 
           subscriberidnumber="1234567" groupname="Orthonet-CIGNA" 
           groupnumber="7654321" copaydollaramount="1" />
 

Как я могу извлечь subscriberidnumber и groupnumber из этого EntityXML столбца?

Ответ №1:

Методы XQuery .nodes() и .value() на помощь.

Возможно, вам потребуется настроить типы данных. Я использовал универсальный VARCHAR(20) по всем направлениям.

SQL

 --DDL and sample data population, start
DECLARE @tbl TABLE (InsuranceEntity_ID INT IDENTITY PRIMARY KEY, EntityXML XML);
INSERT INTO @tbl (EntityXML) VALUES
(N'<insurance insurancepartnerid="CIGNA" sequencenumber="1"
           subscriberidnumber="1234567" groupname="Orthonet-CIGNA"
           groupnumber="7654321" copaydollaramount="1"/>');
--DDL and sample data population, end

SELECT InsuranceEntity_ID
    , c.value('@subscriberidnumber', 'VARCHAR(20)') AS subscriberidnumber
    , c.value('@groupnumber', 'VARCHAR(20)') AS groupnumber 
FROM @tbl
    CROSS APPLY EntityXML.nodes('/insurance') AS t(c);
 

Вывод

  -------------------- -------------------- ------------- 
| InsuranceEntity_ID | subscriberidnumber | groupnumber |
 -------------------- -------------------- ------------- 
|                  1 |            1234567 |     7654321 |
 -------------------- -------------------- -------------