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
datoschar
ovarchar
(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
datosnchar
onvarchar
(es decir, UTF-16) se convierten en dos bytes cada uno, en formato big-endian, por lo queN''ABC''
convierte en0x410042004300
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: