T-SQL 2005: передача нулевых значений через тип данных XML - PullRequest
3 голосов
/ 09 декабря 2010

Для следующего запроса:

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)?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Если кому-то интересно, я пошел по этому пути, хотя я надеялся, что есть способ сделать это с помощью функций XML сервера SQL:

CAST(NULLIF(Params.Item.query('c').value('.', 'varchar(100)'), '') AS int)
3 голосов
/ 09 декабря 2010

cast (nullif (Params.Item.query ('c'). Value ('.', 'Varchar (150)'), '') как int)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...