我正在将xml字符串转换为表格类型:
SELECT
[Guid] = r.value('(Guid)[1]', 'uniqueidentifier'),
[Id] = r.value('(Id)[1]', 'int'),
[SomeColumn] = r.value('(SomeColumn)[1]', 'int'),
FROM
@xml.nodes('//Items') AS T(r)
SomeColumn
是一个可以为空的int。对于此元素,传递的xml如下:
<SomeColumn xsi:nil="true" />
但是,该列设置为0而不是null。有没有办法强制在实际为空的可空列上返回null?
答案 0 :(得分:3)
好吧,您可以将其检索为varchar
而不是int
,然后检查检索到的字符串的空白,例如:
SELECT
[Guid] = r.value('(Guid)[1]', 'uniqueidentifier'),
[Id] = r.value('(Id)[1]', 'int'),
[SomeColumn] = cast(nullif(r.value('(SomeColumn)[1]', 'varchar(20)'), '') as int)
FROM
@xml.nodes('//Items') AS T(r)