Děkuji za uvedení více názorných příkladů. Pokud mohu říci z dokumentace a googlování, není to možné v MSSQL 2005 bez UDF nebo jiného procedurálního kódu. V MSSQL 2008 styl funkce CONVERT(). parametr nyní podporuje binární data, takže to můžete udělat přímo takto:
select convert(int, convert(varbinary, '0x89', 1))
V předchozích verzích máte na výběr:
- Použijte UDF (TSQL nebo CLR; CLR může být ve skutečnosti jednodušší)
- Zabalte SELECT do uložené procedury (ale pravděpodobně v ní stejně budete mít ekvivalent UDF)
- Převeďte jej v rozhraní frontend aplikace
- Upgradujte na MSSQL 2008
Pokud je převod dat pouze pro účely zobrazení, aplikace může být nejjednodušším řešením:formátování dat tam stejně obvykle patří. Pokud to musíte udělat v dotazu, pak je UDF nejjednodušší, ale výkon nemusí být skvělý (vím, že jste řekli, že jste raději nepoužili UDF, ale není jasné proč). Hádám, že upgrade na MSSQL 2008 jen kvůli tomu pravděpodobně není realistický.
Nakonec, pro informaci, číslo verze, které jste uvedli, je verze Management Studio, nikoli číslo verze vašeho serveru. Chcete-li to získat, dotazujte se na samotný server pomocí select @@version
nebo select serverproperty('ProductVersion')
.