SQL Server: OPENXML против SELECT..FROM при работе с XML?

У меня есть этот xml:

DECLARE @x XML
SET @x = 
    '<data>
       <add>a</add>
       <add>b</add>
       <add>c</add>
     </data>';

Задача:

Я хочу перечислить a,b,c.

подход 1:

SELECT s.value('.', 'VARCHAR(8000)') AS [ADD]
FROM   @x.nodes('/data/add') AS t(s) 

подход 2:

DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @x

SELECT *
FROM   OPENXML(@idoc, '/data/add', 2)
       WITH ([add] NVARCHAR(MAX) '.')

оба они дают мне:

enter image description here

вопрос:

какой способ предпочтительнее?

Есть ли какие-либо преимущества последнего перед первым (или наоборот)?

10
задан Royi Namir 8 March 2012 в 08:42
поделиться