Tengo el siguiente (muy simplificado) documento XML que estoy leyendo en mi base de datos utilizando la función OPENXML:El tratamiento de los elementos vacíos como nulos en función OPENXML de SQL Server
<root>
<row>
<bar>123</bar>
</row>
<row>
<bar>0</bar>
</row>
<row>
<bar></bar>
</row>
</root>
Estoy importando en en la base de datos como por lo que:
insert into [Foo]
([bar])
select
ds.[bar]
from openxml(@xmlHandle, 'root/row', 2)
with ([bar] int) ds
el problema es que OPENXML convierte campos vacíos con el tipo de datos int a cero, por lo que este se inserta en mi mesa:
bar
----
123
0
0
lo que quiero insertado en mi mesa es:
bar
----
123
0
NULL
¿Cómo consigo la función OPENXML para tratar campos vacíos como NULL y no convertirlo en cero por defecto?
Hola Kevin, ¿Tuviste algún problema con el operador NULLIF como se menciona en mi respuesta anterior? La ventaja obvia del operador NULLIF es la mayor legibilidad y elusión de las cláusulas WHEN ... THEN. – Vaibhav
FYI: si proporciona un nodo vacío, obtendrá la conversión a un valor predeterminado. Si elimina el nodo vacío obtendrá una solución NULA – Jay