2010-09-17 26 views
5

SQL Server'da bir dizenin onaltılık bir dökümünü elde etmenin herhangi bir yolu var mı? Karakter seti ve harmanlama sorunlarını gidermek yararlı olur.Dizenin onaltılık dökümünü göster

MySQL'te SELECT HEX('€uro') yaparsınız ve Oracle'da SELECT DUMP('€uro') FROM DUAL yapardınız.

cevap

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

İade varsayılan harmanlama On

0x8075726F 

.

Düzeltme. Sadece Unicode etiketi

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

İade

0xAC20750072006F00 
+1

Güzel fark! Bayt düzeninin neye bağlı olduğunu biliyor musunuz? Seçici olmak, 'AC20' yerine 20AC 'yi tercih ederim, ancak her durumda, hangi siparişin beklendiğinden emin olmak istiyorum. –

+0

@ Álvaro - Hayır Ben bunun cevabını bilmiyorum korkuyorum. –

+1

@ Álvaro: Bu biraz kötüydü ve sanırım daha yüksek düzlemli Unicode glifleri kullanan dizeler için başarısız olabilir, ancak bayt-order gereksiniminizi karşılar gibi görünüyor: SELECT SUBSTRING (CAST (CAST (0xFEFF + SUBSTRING) (CAST (CAST (XML olarak XML)) VARBINARY (MAX)), 3, DATALENGTH (CAST (XML olarak))) - 2) AS XML) VARBINARY (MAX)), 3, DATALENGTH (CAST (@) XML olarak)) - 2) –