DECLARE @xVar XML
SET @xVar =
'<book genre="security" publicationdate="2002" ISBN="0-7356-1588-2">
<title>Writing Secure Code</title>
<author>
<firstname>Michael</firstname>
<lastname>Howard</lastname>
<age>25</age>
<birthday>2010-05-17T00:00:00</birthday>
</author>
<author>
<firstname></firstname>
<lastname>LeBlanc</lastname>
<age></age>
<birthday></birthday>
</author>
<price>39.99</price>
</book>'
SELECT nref.query('age') AS age
FROM @xVar.nodes('//author') AS authors(nref)
如何在将节点解析为列之前检查节点中的实际值。当插入普通表时,当我真正需要的是null时,这段代码将插入0。为任何非文本数据类型(如int或datetime(插入1/1/1900))插入缺省值。
答案 0 :(得分:2)
您可以使用内置函数NULLIF执行此操作:
SELECT NULLIF(nref.query('age'), 0) AS age
FROM ...
如果第一个术语与第二个术语匹配,则该函数返回NULL。如果没有,那么它将返回第一个术语。