Aqui estão 3 maneiras de converter um valor hexadecimal em um inteiro no SQL Server.
Primeiro estão duas funções T-SQL que permitem converter um valor hexadecimal em um inteiro. Além dessas funções, há também o conceito de conversão implícita, que também pode produzir o mesmo resultado.
Exemplo 1 – A função CONVERT()
A primeira função que veremos é a
CONVERT()
função. Isso permite converter entre tipos de dados no SQL Server. Aqui está um exemplo de como usar esta função para converter um valor hexadecimal em um inteiro:
SELECT CONVERT(INT, 0xfcab) Result;
Resultado:
+----------+ | Result | |----------| | 64683 | +----------+
Neste caso, convertemos o valor hexadecimal
fcab
(prefixado com 0x
) para um inteiro. Exemplo 2 – A função CAST()
Alternativamente, podemos usar o
CAST()
função para fazer a mesma coisa que o exemplo anterior:SELECT CAST(0xfcab AS INT) Result;
Resultado:
+----------+ | Result | |----------| | 64683 | +----------+
Observe que
CAST()
e CONVERT()
usar sintaxes ligeiramente diferentes. No caso de CAST()
o valor a ser convertido vem primeiro, enquanto é o contrário com CONVERT()
. Exemplo 3 – Conversão implícita
Aqui está um exemplo de como realizar uma conversão implícita, simplesmente multiplicando o valor hexadecimal por 1:
SELECT 0xfcab * 1 Result;
Resultado:
+----------+ | Result | |----------| | 64683 | +----------+
Exemplo 4 – Formatando o resultado
Também podemos usar o
FORMAT()
função para formatar o resultado final. Nesse caso, ainda usamos uma função de conversão para realizar a conversão real. É só que também usamos o FORMAT()
função para formatar o resultado como um número (usando o N
especificador de formato). SELECT FORMAT(CAST(0xfcab AS INT), 'N') Result;
Resultado:
+-----------+ | Result | |-----------| | 64,683.00 | +-----------+
Observe que essa função realmente retorna o resultado como uma string.
Observe também que o
FORMAT()
A função aceita apenas tipos de dados numéricos e de data e hora. Portanto, não podemos passar um valor hexadecimal diretamente para a função. Se tentarmos fazer isso, eis o que acontece:SELECT FORMAT(0xfcab, 'N') Result;
Resultado:
Argument data type varbinary is invalid for argument 1 of format function.