2010-12-09 28 views
3

Pour la requête suivante:T-SQL 2005: Passage de valeurs NULL par XML type de données

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) 

Comment pourrais-je aller sur la modification de cette façon que si une valeur vide est entrée dans le champ noeud c, la valeur doit être NULL, pas la valeur par défaut de int (0)?

Répondre

4

Au cas où quelqu'un se demande, je suis allé dans cette voie, même si j'espérais qu'il y avait un moyen de le faire via les fonctionnalités XML de SQL Server:

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

fonte (nullif (Params.Item.query ('c'). value ('.', 'varchar (150)'), '') as int)