sql >> Base de Datos >  >> RDS >> Sqlserver

SQL:¿Convertir un número entero en una cadena hexadecimal?

Hay una función integrada para generar cadenas hexadecimales de valores binarios

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))

Necesitas binary(3) para garantizar la longitud correcta de la cadena de salida
Esto es incorrecto. Obtienes 4 dígitos hexadecimales porque 0 y 255 aquí son 4 bytes int valores

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))

Actualización de octubre de 2017:

La conversión ahora está integrada en SQL Server (¡desde 2008!), así que simplemente podemos usar CONVERT

SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)