2010-12-09 40 views
3

传递空值以下查询:T-SQL 2005:通过XML数据类型

DECLARE @ItemInfo xml 

SET @ItemInfo = '<is><i><a>A Value</a><b>B Value</b><c></c></i></is>' 

SET ARITHABORT ON 

SELECT 
    Params.Item.query('a').value('.', 'varchar(150)') 
    ,Params.Item.query('b').value('.', 'varchar(150)') 
    ,Params.Item.query('c').value('.', 'int') 
FROM 
    @ItemInfo.nodes('/is/i') as Params(Item) 

我怎么会去修改这个,这样,如果输入为节点c空值,该值应为NULL,不是int(0)的默认值?

回答

4

如果任何人的怀疑,我去了这条路线,但我希望有办法通过SQL服务器的XML功能来做到这一点:

CAST(NULLIF(Params.Item.query('c').value('.', 'varchar(100)'), '') AS int) 
3

投(NULLIF(Params.Item.query( 'c')。value('。','varchar(150)'),'')as int)