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

3 modi per convertire HEX in INT in SQL Server (T-SQL)

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.