【发布时间】:2015-07-24 12:29:39
【问题描述】:
我正在尝试读取 xml 并将其存储在 SQL 服务器中。
DECLARE @xml XML
SET @xml =
'<report>
<personal>
<search>
<subject>
<name>SearchName</name>
</subject>
</search>
</personal>
<personal>
<search>
<subject>
<name>SearchName</name>
</subject>
</search>
<result>
<history>
<name>HistoryName</name>
</history>
</result>
</personal>
<personal>
<search>
<subject>
<name>SearchName</name>
</subject>
</search>
<result>
<history>
<dob>HistoryDOB</dob>
</history>
</result>
</personal>
</report>
'
我在这里尝试的是 - 选择名称但这里的条件是
如果
<personal>包含<result>,则选择history/name下的name如果
<personal>不包含<result>,请选择subject/name下的name如果
<personal>包含<result>BUT 名称不存在则输入 null
我正在使用以下查询
SELECT
COALESCE(
A.Search.value('(result/history/name)[1]','varchar(max)'),
A.Search.value('(search/subject/name)[1]','varchar(max)')
) AS Name
FROM @xml.nodes('/report/personal') as A(Search)
它正在返回
SearchName
HistoryName
SearchName
但它在第三种情况下失败了。
【问题讨论】:
标签: sql-server xml xquery-sql