Convertir signé int string adresse ip dans SQL Server

Je suis à la récupération d'un signé int à partir d'une base de données SQL Server et le besoin de la convertir en "normal" à la recherche en pointillés chaîne de caractères pour l'affichage des utilisateurs.

Recherche sur google, j'ai trouvé ce code:

SELECT 
   dbo.IPADDRESS.IPADDRESS,
   CAST(ROUND( (cast(dbo.IPADDRESS.IPADDRESS as bigint) / 16777216 ), 0, 1) AS varchar(4)) + '.' +
   CAST((ROUND( (cast(dbo.IPADDRESS.IPADDRESS as bigint) / 65536 ), 0, 1) % 256) AS varchar(4)) + '.' +
   CAST((ROUND( (cast(dbo.IPADDRESS.IPADDRESS as bigint) / 256 ), 0, 1) % 256) AS varchar(4)) + '.' + 
   CAST((cast(dbo.IPADDRESS.IPADDRESS as bigint) % 256 ) AS varchar(4)) as IPDottedNotation
FROM  
   dbo.IPADDRESS

qui fonctionne de temps en temps, mais produit loufoque de sortie d'autres moments. Par exemple, la conversion de ce -1951276725 donne le résultat -116.-78.-30.-181.

Des suggestions? Merci.

OriginalL'auteur jalperin | 2012-06-24