我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