2015-06-25 2 views
1

Как получить значение тега «note» с возвратом каретки?
Вот мой код:Получить значения узлов XML с возвратом каретки с использованием SQL

declare @Input xml='<Root> 
    <Addresses> 
    <Address> 
     <note>AAA</note> 
    </Address> 
    <Address> 
     <note>BBB</note> 
    </Address> 
    <Address> 
     <note>CCC</note> 
    </Address> 
    <Address> 
     <note>DDD</note> 
    </Address>  
    </Addresses> 
</Root>' 

SELECT CONVERT(nvarchar(max),m.c.query('.//Address/note/text()')) AS Comment 
FROM @Input.nodes('Root/Addresses') AS m (c) 

Я ожидаю результат, как показано ниже, вместо 'AAABBBCCCDDD'

AAA 
BBB 
CCC 
DDD 
+1

[Это вопрос] (http://stackoverflow.com/q/30849052/1048425) довольно похож и должен помочь, единственное отличие, по-видимому, в том, что другой вопрос требует, чтобы запятая была разделителем, где так как вам требуется возврат каретки. – GarethD

+0

@ GarethD- Это помогает – Pradeep

ответ

2

Вы можете использовать что-то вроде этого, чтобы получить желаемый результат:

declare @Result nvarchar(max) 

select @Result = isnull(@Result + char(13) + char(10), '') + m.c.value('.', 'nvarchar(max)') 
from @Input.nodes('Root/Addresses/Address/note') as m(c) 

select @Result 
+0

Я ожидал результата так же, как GarethD, упомянутого в комментарии. В любом случае, спасибо за ваше решение. – Pradeep

+0

@Pradeep oh, я не понял, что вам нужно, чтобы объединить ваши значения в одну строку, имеющую новую строку как разделитель. Я обновил свой ответ с помощью альтернативного подхода - посмотрите, возможно, это будет соответствовать вашим требованиям. –