sql >> Databáze >  >> RDS >> Sqlserver

MS SQL server - převod HEX řetězce na celé číslo

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




  1. Duplicitní hodnota klíče IntegrityError porušuje jedinečné omezení – django/postgres

  2. Laravel Výmluvná se dvěma „KDE NENÍ IN“ v dílčím dotazu

  3. Proč je velikost mého stolu více než 4x větší, než jsem očekával? (řádky*bajty/řádek)

  4. Jak naplnit hodnoty cizích klíčů v konfiguraci Hibernate + Spring JPA, když jsou současně zachovány nadřazené/podřízené objekty?