Saltar al contenido

Convertir string en xml e inserte Sql Server

Revisamos profundamente cada tutorial de nuestra web con el objetivo de mostrarte siempre información con la mayor veracidad y actual.

Solución:

Danos una muestra de tu XML ya que todo esto funcionaría:

CONVERT(XML, '')
CONVERT(XML, '                   ', 1)
CAST('CarolElliot'  AS XML)

También es posible que primero deba enviarlo a nvarchar o varbinary (de la documentación de Microsoft):

Puede analizar cualquiera de los SQL Server string tipos de datos, como [n][var]carbonizarse, [n]texto, varbinary e imagen, en el tipo de datos xml emitiendo (CAST) o convirtiendo (CONVERT) el string al tipo de datos xml. El XML sin tipo se comprueba para confirmar que está bien formado. Si existe un esquema asociado al tipo xml, también se realiza la validación. Para obtener más información, consulte Comparar XML con tipo con XML sin tipo.

Los documentos XML se pueden codificar con diferentes codificaciones (por ejemplo, UTF-8, UTF-16, windows-1252). A continuación se describen las reglas sobre cómo string y los tipos de fuentes binarias interactúan con la codificación del documento XML y cómo se comporta el analizador.

Dado que nvarchar asume una codificación Unicode de dos bytes, como UTF-16 o UCS-2, el analizador XML tratará el string como un documento o fragmento XML codificado en Unicode de dos bytes. Esto significa que el documento XML también debe codificarse en una codificación Unicode de dos bytes para que sea compatible con el tipo de datos de origen. Un documento XML codificado en UTF-16 puede tener una marca de orden de bytes (BOM) UTF-16, pero no es necesario, ya que el contexto del tipo de origen deja claro que solo puede ser un documento codificado en Unicode de dos bytes.

El contenido de un varchar string el analizador XML lo trata como un documento/fragmento XML codificado de un byte. Desde la fuente varchar string tiene una página de códigos asociada, el analizador utilizará esa página de códigos para la codificación si no se especifica una codificación explícita en el propio XML. Si una instancia XML tiene una BOM o una declaración de codificación, la BOM o la declaración deben ser coherentes con la página de códigos. , de lo contrario, el analizador informará de un error.

El contenido de varbinary se trata como un flujo de punto de código que se pasa directamente al analizador XML. Por lo tanto, el documento o fragmento XML debe proporcionar la lista de materiales u otra información de codificación en línea. El analizador solo observará la secuencia para determinar la codificación. Esto significa que el XML codificado en UTF-16 debe proporcionar la BOM UTF-16 y una instancia sin BOM y sin una codificación de declaración se interpretará como UTF-8.

Si la codificación del documento XML no se conoce de antemano y los datos se pasan como string o datos binarios en lugar de datos XML antes de convertirlos a XML, se recomienda tratar los datos como varbinary. Por ejemplo, al leer datos de un archivo XML utilizando OpenRowset(), se deben especificar los datos que se leerán como un valor varbinary(max):

select CAST(x as XML) 
from OpenRowset(BULK 'filename.xml', SINGLE_BLOB) R(x)

SQL Server representa internamente XML en una representación binaria eficiente que utiliza la codificación UTF-16. La codificación proporcionada por el usuario no se conserva, pero se tiene en cuenta durante el proceso de análisis.

Solución:

CONVERT(XML, CONVERT(NVARCHAR(max), ProductXML))

Esto funcionó para mí:

select CAST(REPLACE(CAST(column3 AS NVARCHAR(MAX)),'utf-8','utf-16') AS XML) from table

Ten en cuenta mostrar esta crónica si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *