Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Server MS SQL:converte la stringa HEX in un numero intero

Grazie per aver fornito alcuni esempi più espliciti. Per quanto posso dire dalla documentazione e da Google, questo non è possibile in MSSQL 2005 senza un UDF o altro codice procedurale. In MSSQL 2008 lo stile della funzione CONVERT() parametro ora supporta i dati binari, quindi puoi farlo direttamente in questo modo:

select convert(int, convert(varbinary, '0x89', 1))

Nelle versioni precedenti, le tue scelte sono:

  • Usa un UDF (TSQL o CLR; CLR potrebbe essere più semplice per questo)
  • Avvolgi SELECT in una procedura memorizzata (ma probabilmente avrai comunque l'equivalente di un UDF)
  • Convertirlo nel front-end dell'applicazione
  • Aggiorna a MSSQL 2008

Se la conversione dei dati è solo a scopo di visualizzazione, l'applicazione potrebbe essere la soluzione più semplice:la formattazione dei dati di solito appartiene comunque a questa. Se devi farlo in una query, un UDF è più semplice ma le prestazioni potrebbero non essere eccezionali (so che hai detto che hai preferito non usare un UDF ma non è chiaro il perché). Immagino che l'aggiornamento a MSSQL 2008 solo per questo probabilmente non sia realistico.

Infine, per tua informazione, il numero di versione che hai incluso è la versione di Management Studio, non il numero di versione del tuo server. Per ottenerlo, interroga il server stesso con select @@version o select serverproperty('ProductVersion') .