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

Serveur MS SQL - convertir la chaîne HEX en nombre entier

Merci d'avoir donné des exemples plus explicites. Pour autant que je sache d'après la documentation et Google, cela n'est pas possible dans MSSQL 2005 sans UDF ou autre code procédural. Dans MSSQL 2008, le style de la fonction CONVERT() prend désormais en charge les données binaires, vous pouvez donc le faire directement comme ceci :

select convert(int, convert(varbinary, '0x89', 1))

Dans les versions précédentes, vos choix sont :

  • Utilisez une UDF (TSQL ou CLR ; CLR pourrait en fait être plus facile pour cela)
  • Enveloppez le SELECT dans une procédure stockée (mais vous aurez probablement toujours l'équivalent d'une UDF dedans de toute façon)
  • Convertissez-le dans le frontal de l'application
  • Mettre à niveau vers MSSQL 2008

Si la conversion des données est uniquement à des fins d'affichage, l'application peut être la solution la plus simple :le formatage des données y appartient de toute façon. Si vous devez le faire dans une requête, alors un UDF est le plus simple mais les performances peuvent ne pas être excellentes (je sais que vous avez dit que vous préfériez ne pas utiliser un UDF mais on ne sait pas pourquoi). Je suppose que la mise à niveau vers MSSQL 2008 juste pour cela n'est probablement pas réaliste.

Enfin, pour votre information, le numéro de version que vous avez inclus est la version de Management Studio, et non le numéro de version de votre serveur. Pour l'obtenir, interrogez le serveur lui-même avec select @@version ou select serverproperty('ProductVersion') .