2017-05-30 6 views
0

xslを使用して子ノードの内部テキストをコンマ区切りで取得したいとします。子ノードの内部テキストを取得し、区切り文字で区切られた文字列に格納します。

コード内に子ノード要素を指定することはできません。何でもかまいません。

例: ID 都市環境科学 応用化学</nameelt > <nameelt>科= "AFFA" > <ORG> <ORGNAME> <nameelt>科、AFF

<東京都 大学< /名札> </ORGNAME > </orgの> <アドレス> <addrelt> Minamiohsawa、 八王子</addrelt > <市>東京 192から0397 < /都市> <国>日本< /国> < /アドレス> <メール> hulie @ au.ac.jp </email > </aff >

私のコードで、

SELECT 
REPLACE(Element.value('(.)[1]','NVARCHAR(MAX)'), CHAR(10), '') AS address 
FROM @xml.nodes('aff') Datalist (Element); 

予想される出力:

応用化学、都市 環境科学研究科、首都大学東京、Minamiohsawa、 東京都八王子市192から0397の教室。 ..このように

答えて

0

DECLARE @xml XML= 
N'<aff id="affa"> 
    <org> 
    <orgname> 
     <nameelt>Department of Applied Chemistry</nameelt> 
     <nameelt>Graduate School of Urban Environmental Sciences, Tokyo Metropolitan University</nameelt> 
    </orgname> 
    </org> 
    <address> 
    <addrelt>Minamiohsawa, Hachioji</addrelt> 
    <city>Tokyo 192-0397</city> 
    <country>Japan</country> 
    </address> 
    <email>[email protected]</email> 
</aff>'; 

- クエリでは.nodes()を使用して、すべて<nameelt>要素を取得します。 FOR XML PATH('')を使用すると、結果は1つの長いカンマ区切りの文字列として返され、STUFFは先行するコンマを最後に切り捨てます。

関連する問題