Как получить конкретный атрибут от элемента XML в SQL Server

На играющих передних Трех Кольца сделал потрясающее задание с Пираты Загадки . Чистый Java и большие выполнения.

35
задан marc_s 13 October 2009 в 16:04
поделиться

2 ответа

Попробуйте использовать функцию .value вместо .query :

SELECT 
  xmlCol.value('(/container/param[@name="paramB"]/@value)[1]', 'varchar(50)') 
FROM  
  LogTable

Выражение XPath потенциально может вернуть список узлов, поэтому вам потребуется добавить [1] в этот потенциальный список, чтобы указать SQL Server использовать первую из этих записей (и да - этот список основан на 1, а не на 0). В качестве второго параметра вам нужно указать, в какой тип следует преобразовать значение - здесь просто догадывайтесь.

Marc

60
ответ дан 27 November 2019 в 07:01
поделиться

В зависимости от фактической структуры вашего xml, может быть полезно поместить на него представление, чтобы упростить использование с использованием «обычного» sql, например

CREATE VIEW vwLogTable
AS
SELECT
    c.p.value('@name', 'varchar(10)') name,
    c.p.value('@value', 'varchar(10)') value
FROM
    LogTable
    CROSS APPLY x.nodes('/container/param') c(p)
GO


-- now you can get all values for paramB as...
SELECT value FROM vwLogTable WHERE name = 'paramB'
7
ответ дан 27 November 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: