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.