Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL:convertire un numero intero in una stringa esadecimale?

C'è una funzione incorporata per generare stringhe esadecimali da valori binari

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

Hai bisogno di binary(3) per garantire la lunghezza corretta della stringa di output
Questo è sbagliato. Ottieni 4 cifre esadecimali perché 0 e 255 qui sono 4 byte int valori

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

Aggiornamento ottobre 2017:

La conversione è ora integrata in SQL Server (dal 2008!!), quindi possiamo semplicemente usare CONVERT

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