2010-09-17 5 views
5

Esiste un modo per ottenere un dump esadecimale di una stringa in SQL Server? Sarebbe utile per risolvere i problemi relativi ai set di caratteri e alle regole di confronto.Mostra dump esadecimale di stringa

In MySQL si farebbe SELECT HEX('€uro') e in Oracle si farebbe SELECT DUMP('€uro') FROM DUAL.

risposta

18
SELECT CAST('€uro' AS VARBINARY(4)) 

Returns

0x8075726F 

Sul mio confronto predefinito.

Modifica. appena notato il tag Unicode

SELECT CAST(N'€uro' AS VARBINARY(8)) 

Returns

0xAC20750072006F00 
+1

Lovely! Sai da cosa dipende l'ordine dei byte? Essendo pignolo, preferirei '20AC' piuttosto che' AC20', ma in ogni caso voglio essere sicuro di quale ordine aspettarmi. –

+0

@ Álvaro - No, non so la risposta a quello che ho paura. –

+1

@ Álvaro: Questo è un po 'cattivo, e suppongo che potrebbe fallire per le stringhe che utilizzano più alto-plane glifi Unicode, ma sembra per soddisfare i requisiti di byte-order: SELEZIONA SUBSTRING (CAST (CAST (0xFEFF + SOTTOSTRINGA (CAST (CAST (@v as XML) come VARBINARY (MAX)), 3, DATALENGTH (CAST (@v as XML)) - 2) AS XML) AS VARBINARY (MAX)), 3, DATALENGTH (CAST (@v come XML)) - 2) –