Dzięki za podanie bardziej wyraźnych przykładów. O ile mogę powiedzieć z dokumentacji i Googlingu, nie jest to możliwe w MSSQL 2005 bez UDF lub innego kodu proceduralnego. W MSSQL 2008 styl funkcji CONVERT() parametr obsługuje teraz dane binarne, więc możesz to zrobić bezpośrednio w ten sposób:
select convert(int, convert(varbinary, '0x89', 1))
W poprzednich wersjach dostępne są następujące opcje:
- Użyj UDF (TSQL lub CLR; CLR może być do tego łatwiejsze)
- Opakuj SELECT w procedurę składowaną (ale prawdopodobnie i tak będziesz miał w niej odpowiednik UDF)
- Konwertuj go w interfejsie aplikacji
- Aktualizacja do MSSQL 2008
Jeśli konwertowanie danych służy tylko do wyświetlania, aplikacja może być najłatwiejszym rozwiązaniem:formatowanie danych zwykle i tak należy do nich. Jeśli musisz to zrobić w zapytaniu, UDF jest najłatwiejszy, ale wydajność może nie być świetna (wiem, że powiedziałeś, że wolisz nie używać UDF, ale nie jest jasne, dlaczego). Zgaduję, że aktualizacja do MSSQL 2008 tylko w tym celu prawdopodobnie nie jest realistyczna.
Na koniec, FYI podany numer wersji to wersja Management Studio, a nie numer wersji serwera. Aby to uzyskać, zapytaj sam serwer za pomocą select @@version
lub select serverproperty('ProductVersion')
.