sql-server sql-server-2000

sql server - Actualizar tabla insertando datos VARBINARY



sql-server sql-server-2000 (1)

Cuando ejecuto la consulta SQL obtuve algo como esto:

No se permite la conversión implícita del tipo de datos varchar al tipo de datos varbinary .... Use la función CONVERTIR para ejecutar esta consulta. (gravedad 16) `

Los datos que quiero insertar parecen

''00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF''

¿Cómo hacer esta consulta?

La consulta se ve como:

UPDATE <table> SET VARBINARY_DATA = ''00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....'' WHERE ID = 12


A partir de SQL Server 2005, CONVERT hace lo que quiere:

CONVERT(varbinary(2000), ''00001340132401324...'', 2)

Los estilos para convertir a / desde binario son:

  • 0: datos sin procesar, los puntos de código ascii se convierten en bytes binarios, los puntos de código UTF-16 se convierten en dos bytes cada uno.
  • 1: formato hexadecimal, con el prefijo ''0x''
  • 2: formato hexadecimal, sin el prefijo ''0x''

Para convertir caracteres a binarios en formato 0:

  • char datos char o varchar (por ejemplo, ASCII, ISO-8859-1) se convierten en bytes binarios. Para codificaciones de un solo carácter, esto significa un byte por carácter.
  • nchar datos nchar o nvarchar (es decir, UTF-16) se convierten en dos bytes cada uno, en formato big-endian, por lo que N''ABC'' convierte en 0x410042004300

Para convertir hexadecimal a binario en formatos 1 y 2:

  • Cada dos dígitos hexadecimales de entrada se convierten en un byte
  • Si la entrada no es válida, se produce un error.
  • No se permiten espacios en blanco ni puntuación.

Ver MSDN:

Si necesita UTF-8, consulte mi respuesta aquí para obtener un UDF que convertirá el texto a UTF-8: