Благодаря, че даде някои по-ясни примери. Доколкото мога да разбера от документацията и Googleing, това не е възможно в MSSQL 2005 без UDF или друг процедурен код. В MSSQL 2008 стилът на функцията CONVERT(). параметърът вече поддържа двоични данни, така че можете да го направите директно по следния начин:
select convert(int, convert(varbinary, '0x89', 1))
В предишните версии вашите възможности за избор са:
- Използвайте UDF (TSQL или CLR; CLR всъщност може да е по-лесно за това)
- Обвийте SELECT в съхранена процедура (но все пак вероятно ще имате еквивалента на UDF в нея)
- Преобразувайте го в предния край на приложението
- Надградете до MSSQL 2008
Ако преобразуването на данните е само за целите на показването, приложението може да е най-лесното решение:форматирането на данни обикновено принадлежи там така или иначе. Ако трябва да го направите в заявка, тогава UDF е най-лесният, но производителността може да не е страхотна (знам, че казахте, че предпочитате да не използвате UDF, но не е ясно защо). Предполагам, че надграждането до MSSQL 2008 само за това вероятно не е реалистично.
И накрая, за информация номерът на версията, който сте включили, е версията на Management Studio, а не номера на версията на вашия сървър. За да получите това, направете запитване до самия сървър с select @@version
или select serverproperty('ProductVersion')
.