Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Servidor MS SQL - converter string HEX em inteiro


Obrigado por dar alguns exemplos mais explícitos. Tanto quanto posso dizer da documentação e do Google, isso não é possível no MSSQL 2005 sem uma UDF ou outro código de procedimento. No MSSQL 2008, o estilo da função CONVERT() agora suporta dados binários, então você pode fazer isso diretamente assim:
select convert(int, convert(varbinary, '0x89', 1))

Nas versões anteriores, suas opções são:
  • Use uma UDF (TSQL ou CLR; CLR pode ser mais fácil para isso)
  • Enrole o SELECT em um procedimento armazenado (mas você provavelmente ainda terá o equivalente a um UDF de qualquer maneira)
  • Converter no front end do aplicativo
  • Atualize para MSSQL 2008

Se a conversão dos dados for apenas para fins de exibição, o aplicativo pode ser a solução mais fácil:a formatação de dados geralmente pertence a ele de qualquer maneira. Se você precisar fazer isso em uma consulta, uma UDF é mais fácil, mas o desempenho pode não ser ótimo (eu sei que você disse que preferia não usar uma UDF, mas não está claro por quê). Eu estou supondo que a atualização para o MSSQL 2008 apenas para isso provavelmente não é realista.

Por fim, para sua informação, o número da versão que você incluiu é a versão do Management Studio, não o número da versão do seu servidor. Para obter isso, consulte o próprio servidor com select @@version ou select serverproperty('ProductVersion') .