Tack för att du ger några mer tydliga exempel. Så vitt jag kan se från dokumentationen och Googling är detta inte möjligt i MSSQL 2005 utan en UDF eller annan procedurkod. I MSSQL 2008 är CONVERT()-funktionens stil parametern stöder nu binär data, så du kan göra det direkt så här:
select convert(int, convert(varbinary, '0x89', 1))
I tidigare versioner är dina val:
- Använd en UDF (TSQL eller CLR; CLR kan faktiskt vara lättare för detta)
- Slå in SELECT i en lagrad procedur (men du kommer förmodligen fortfarande att ha motsvarigheten till en UDF i den ändå)
- Konvertera den i applikationsgränssnittet
- Uppgradera till MSSQL 2008
Om konvertering av data endast är för visningsändamål, kan applikationen vara den enklaste lösningen:dataformatering hör vanligtvis dit ändå. Om du måste göra det i en fråga är en UDF enklast men prestandan kanske inte är bra (jag vet att du sa att du föredrog att inte använda en UDF men det är inte klart varför). Jag antar att uppgradering till MSSQL 2008 bara för detta förmodligen inte är realistisk.
Slutligen, FYI versionsnumret du inkluderade är versionen av Management Studio, inte versionsnumret på din server. För att få det, fråga själva servern med select @@version
eller select serverproperty('ProductVersion')
.