Ecco 3 modi per convertire un valore esadecimale in un numero intero in SQL Server.
Innanzitutto ci sono due funzioni T-SQL che consentono di convertire un valore esadecimale in un numero intero. Oltre a queste funzioni, c'è anche il concetto di conversione implicita, che può anche produrre lo stesso risultato.
Esempio 1 – La funzione CONVERT()
La prima funzione che esamineremo è CONVERT()
funzione. Ciò consente di convertire tra tipi di dati in SQL Server.
Ecco un esempio di utilizzo di questa funzione per convertire un valore esadecimale in un numero intero:
SELECT CONVERT(INT, 0xfcab) Result;
Risultato:
+----------+ | Result | |----------| | 64683 | +----------+
In questo caso, convertiamo il valore esadecimale fcab
(preceduto da 0x
) a un numero intero.
Esempio 2 – La funzione CAST()
In alternativa possiamo usare il CAST()
funzione per fare la stessa cosa dell'esempio precedente:
SELECT CAST(0xfcab AS INT) Result;
Risultato:
+----------+ | Result | |----------| | 64683 | +----------+
Nota che CAST()
e CONVERT()
usa sintassi leggermente diverse. Nel caso di CAST()
il valore da trasmettere viene prima, mentre è il contrario con CONVERT()
.
Esempio 3 – Conversione implicita
Ecco un esempio di esecuzione di una conversione implicita, semplicemente moltiplicando il valore esadecimale per 1:
SELECT 0xfcab * 1 Result;
Risultato:
+----------+ | Result | |----------| | 64683 | +----------+
Esempio 4 – Formattazione del risultato
Possiamo anche usare il FORMAT()
funzione per formattare il risultato finale. In questo caso, utilizziamo ancora una funzione di conversione per eseguire la conversione effettiva. È solo che utilizziamo anche FORMAT()
funzione per formattare il risultato come un numero (usando il N
identificatore di formato).
SELECT FORMAT(CAST(0xfcab AS INT), 'N') Result;
Risultato:
+-----------+ | Result | |-----------| | 64,683.00 | +-----------+
Nota che questa funzione restituisce effettivamente il risultato come una stringa.
Nota anche che il FORMAT()
la funzione accetta solo tipi di dati numerici e data e ora. Pertanto, non possiamo passare un valore esadecimale direttamente alla funzione. Se proviamo a farlo, ecco cosa succede:
SELECT FORMAT(0xfcab, 'N') Result;
Risultato:
Argument data type varbinary is invalid for argument 1 of format function.