Как использовать XQuery для получения значений NULL для INT
У меня есть следующий пример
DECLARE @MyXml XML
SET @MyXml = CONVERT(XML, '<?xml version="1.0" ?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<number xsi:nil="true" />
</root>')
SELECT @MyXml.value('(/root/number)[1]', 'INT') AS MyNumber
Приведенный выше список дает мне 0 вместо NULL
что я ожидал. Я знаю, что я использую Schema Instance
но разве это не должно быть уже общепринятым стандартом?
1 ответ
Решение
Ты можешь использовать text()
:
DECLARE @MyXml XML
SET @MyXml = CONVERT(XML,
'<?xml version="1.0" ?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<number xsi:nil="true" />
</root>')
SELECT @MyXml.value('(/root/number/text())[1]', 'INT') AS MyNumber