SQL Server 2014ストアドプロシージャでXMLファイルを解析しようとしています。SQL ServerでXMLを解析してNULLになる
XMLファイルは次のようになります。
<PROJECTS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<APPLICATION_ID>9204797</APPLICATION_ID>
<ACTIVITY>R44</ACTIVITY>
<ADMINISTERING_IC>AI</ADMINISTERING_IC>
<APPLICATION_TYPE>5</APPLICATION_TYPE>
<ARRA_FUNDED>N</ARRA_FUNDED>
<AWARD_NOTICE_DATE>01/11/2017</AWARD_NOTICE_DATE>
<BUDGET_START>01/01/2017</BUDGET_START>
<BUDGET_END>12/31/2017</BUDGET_END>
</row>
</PROJECT>
そして、私のコードは
SELECT
nref.value('@APPLICATION_ID[1]','varchar(max)') APPLICATION_ID,
nref.value('@ACTIVITY[1]','varchar(max)') ACTIVITY
FROM
[ADMIN_Grant_Exporter_Files_XML]
CROSS APPLY
XMLData.nodes('//PROJECT/row') as R(nref)
WHERE
APPLICATION_ID = '9204797'
APPLICATION_ID
では、テーブル内の別の列として格納されます。
私は
XMLData.nodes('//PROJECT/row')
を試してみましたが、そのような
XMLData.nodes('//PROJECT[1]')
XMLData.nodes('//row[1]')
など、すべての組み合わせがすべてのヘルプは高く評価されます。私がWHERE
を削除しても、この時点でテーブルにレコードが1つしかないため、返されるのはnullです。
'@ACTIVITYにエイリアス名を使用することはできませんあなたのxml
の要素です'は要素ではなく属性にアクセスするための構文です。 '@'を取り除く – Mitch