2010-12-09 94 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)