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')
.