Voici 3 façons de convertir une valeur hexadécimale en entier dans SQL Server.
Tout d'abord, deux fonctions T-SQL vous permettent de convertir une valeur hexadécimale en entier. En plus de ces fonctions, il existe également le concept de conversion implicite, qui peut également produire le même résultat.
Exemple 1 - La fonction CONVERT()
La première fonction que nous allons examiner est la CONVERT()
une fonction. Cela vous permet de convertir entre les types de données dans SQL Server.
Voici un exemple d'utilisation de cette fonction pour convertir une valeur hexadécimale en entier :
SELECT CONVERT(INT, 0xfcab) Result;
Résultat :
+----------+ | Result | |----------| | 64683 | +----------+
Dans ce cas, nous convertissons la valeur hexadécimale fcab
(préfixé par 0x
) à un entier.
Exemple 2 - La fonction CAST()
Nous pouvons alternativement utiliser le CAST()
fonction pour faire la même chose que l'exemple précédent :
SELECT CAST(0xfcab AS INT) Result;
Résultat :
+----------+ | Result | |----------| | 64683 | +----------+
Notez que CAST()
et CONVERT()
utiliser des syntaxes légèrement différentes. Dans le cas de CAST()
la valeur à convertir vient en premier, alors que c'est l'inverse avec CONVERT()
.
Exemple 3 – Conversion implicite
Voici un exemple d'exécution d'une conversion implicite, simplement en multipliant la valeur hexadécimale par 1 :
SELECT 0xfcab * 1 Result;
Résultat :
+----------+ | Result | |----------| | 64683 | +----------+
Exemple 4 - Formatage du résultat
On peut aussi utiliser le FORMAT()
fonction pour formater le résultat final. Dans ce cas, nous utilisons toujours une fonction de conversion pour effectuer la conversion proprement dite. C'est juste que nous utilisons aussi le FORMAT()
fonction pour formater le résultat sous forme de nombre (en utilisant le N
spécificateur de format).
SELECT FORMAT(CAST(0xfcab AS INT), 'N') Result;
Résultat :
+-----------+ | Result | |-----------| | 64,683.00 | +-----------+
Notez que cette fonction renvoie en fait le résultat sous forme de chaîne.
Notez également que le FORMAT()
La fonction accepte uniquement les types de données numériques et date et heure. Par conséquent, nous ne pouvons pas transmettre une valeur hexadécimale directement à la fonction. Si nous essayons de le faire, voici ce qui se passe :
SELECT FORMAT(0xfcab, 'N') Result;
Résultat :
Argument data type varbinary is invalid for argument 1 of format function.