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

3 formas de convertir HEX a INT en SQL Server (T-SQL)

Aquí hay 3 formas de convertir un valor hexadecimal a un número entero en SQL Server.

En primer lugar, hay dos funciones T-SQL que le permiten convertir un valor hexadecimal en un número entero. Además de estas funciones, también existe el concepto de conversión implícita, que también puede producir el mismo resultado.

Ejemplo 1:la función CONVERTIR()

La primera función que veremos es CONVERT() función. Esto le permite convertir entre tipos de datos en SQL Server.

Este es un ejemplo del uso de esta función para convertir un valor hexadecimal en un número entero:

SELECT CONVERT(INT, 0xfcab) Result;

Resultado:

+----------+
| Result   |
|----------|
| 64683    |
+----------+

En este caso, convertimos el valor hexadecimal fcab (con el prefijo 0x ) a un número entero.

Ejemplo 2:la función CAST()

Alternativamente, podemos usar el CAST() función para hacer lo mismo que el ejemplo anterior:

SELECT CAST(0xfcab AS INT) Result;

Resultado:

+----------+
| Result   |
|----------|
| 64683    |
+----------+

Tenga en cuenta que CAST() y CONVERT() utilizar sintaxis ligeramente diferentes. En el caso de CAST() el valor a emitir es lo primero, mientras que es al revés con CONVERT() .

Ejemplo 3:conversión implícita

Aquí hay un ejemplo de cómo realizar una conversión implícita, simplemente multiplicando el valor hexadecimal por 1:

SELECT 0xfcab * 1 Result;

Resultado:

+----------+
| Result   |
|----------|
| 64683    |
+----------+

Ejemplo 4:formato del resultado

También podemos usar el FORMAT() función para formatear el resultado final. En este caso, todavía usamos una función de conversión para realizar la conversión real. Es solo que también usamos el FORMAT() función para formatear el resultado como un número (usando el N especificador de formato).

SELECT FORMAT(CAST(0xfcab AS INT), 'N') Result;

Resultado:

+-----------+
| Result    |
|-----------|
| 64,683.00 |
+-----------+

Tenga en cuenta que esta función en realidad devuelve el resultado como una cadena.

También tenga en cuenta que el FORMAT() La función solo acepta tipos de datos numéricos y de fecha y hora. Por lo tanto, no podemos pasar un valor hexadecimal directamente a la función. Si tratamos de hacer eso, esto es lo que sucede:

SELECT FORMAT(0xfcab, 'N') Result;

Resultado:

Argument data type varbinary is invalid for argument 1 of format function.