openXML
初めて SQL Server 2012 で関数を使用しようとしていますが、問題が発生しています。値のないノードがある場合、つまり
<amenity id="bathtub" name="Bathtub" />
以下のコードを使用して XML からデータを抽出すると、常に NULL 値が返されます。通常の要素、つまり
<name>Attic Loft in a historical building</name>
うまくいくようです。openXML を使用してノードの存在を確認する簡単な方法はありますか?
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM myXML
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT *
FROM OPENXML(@hDoc, 'properties/property/amenities')
WITH
(
name [nvarchar](250) '../name',
externalId [nvarchar](50) '../id',
externalURL [nvarchar](250) '../landing_page_url',
description [nvarchar](max) '../description',
bathtub [bit] 'bathtub '
)
EXEC sp_xml_removedocument @hDoc
GO