2010-12-09 3 views
3

Für die folgende Abfrage:T-SQL 2005: Übergeben von NULL-Werten über XML-Datentyp

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) 

Wie würde ich mich über diese zu modifizieren, so dass, wenn ein Blindwert wird für den Knoten c eingegeben in sollte der Wert sein NULL, nicht der Standardwert von int (0)?

Antwort

4

Bei fragen, jemand ist, ich diesen Weg gegangen, obwohl ich einen Weg, es war hatte gehofft, es über die XML-Funktionen von SQL Server zu tun:

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

cast (nullif (Params.Item.query ('c'). value ('.', 'varchar (150)'), '') als int)