Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL :Convertir un entier en chaîne hexadécimale ?

Il existe une fonction intégrée pour générer des chaînes hexadécimales à partir de valeurs binaires

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))

Vous avez besoin de binary(3) pour garantir la longueur correcte de la chaîne de sortie
Ceci est faux. Vous obtenez 4 chiffres hexadécimaux car 0 et 255 sont ici sur 4 octets int valeurs

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))

Mise à jour d'octobre 2017 :

La conversion est maintenant intégrée à SQL Server (depuis 2008 !!) nous pouvons donc simplement utiliser CONVERT

SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)