#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 |
-------------------- -------------------- -------------