Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Fonction de conversion de Hexadécimal vers Décimal en Decimal(38,0)

Petit code qui m'a été utile dernièrement, le problème étant que SQL Server en cas de conversion cité plus haut vers un bigint par exemple utilise un entier signé, la conversion peut se relever fausse. De plus au-delà du Bigint ce n'est plus possible d'où l'idée d'écrire une fonction qui cible le plus grand type existant dans SQL Server decimal(38,0), soit 38 décimales, il faudra changer en fonction la taille de la chaine hexa entrante.

Ce n'est pas la plus efficace du monde étant donné que j'itère que calculer la puissance de 2, mais il se trouve que la fonction POWER de SQL perd en précision sur les grandes puissant, car il se base sur le type float.

ALTER FUNCTION fn_hex2dec(@hexstr varchar(16))
RETURNS decimal(38,0)
AS
BEGIN

    DECLARE @i int =
0 ;
    DECLARE
@j int =
0 ;

    DECLARE
@hexval varchar(16) = REVERSE(RTRIM(LTRIM(UPPER(@hexstr)))) ;
    DECLARE @decval decimal(38,0) = 0;
    DECLARE
@power decimal(38,0) = 0;
    

    IF @hexval LIKE
'%^[0123456789ABCDEF]%'
        RETURN NULL ;
    

    

    DECLARE @hexstring char(16) = '0123456789ABCDEF';
    

    WHILE @i < LEN(@hexval)
    BEGIN
    

        IF @i = 0
            SET @power = 1;
        ELSE
        BEGIN
            
            SET @j = 1 ;
            SET @power = 16;
        
            WHILE @j <= @i - 1
            BEGIN
            
                SET @power *= 16 ;
                SET @j += 1 ;
            
            END
            
        END

        SET @decval += CAST(CHARINDEX(SUBSTRING(@hexval, @i + 1, 1), @hexstring) - 1 AS decimal(38,0)) * @power ;
        SET
@i += 1 ;
    

    END
    

    RETURN @decval

    
END



Si vous trouvez mieux (En TSQL, EF refuse et .Net aussi) je suis preneur, en attendant si cette fonction peut être utile à quelqu'un.

Bonne fonction…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié vendredi 12 novembre 2010 20:36 par christian

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01