Makale numarası: 104829 - Son Gözden Geçirme: 22 Şubat 2005 Salı - Gözden geçirme: 3.2

BILGI: İkili veri, onaltılık dize için dönüştürme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

SQL Server için ikili veri, onaltılık bir dizeye dönüştürme yerleşik Transact-SQL komutu yok.

Daha fazla bilgi

Transact SQL CONVERT komutunu karakter verileri için bir karakter biçimde tek bir bayt ikili veri dönüştürür. SQL Server her bayt kaynak ikili veri alır, bir tamsayı değerine dönüştürür ve tamsayı değeri, hedef karakter verilerinde ASCII değeri olarak kullanır. Bu davranış, ikili, varbinary ve zaman damgası veri türleri için geçerlidir.

Örneğin, ikili değer 00001111 (onaltılı 0x0F), 15'tir, tamsayı eşdeğer dönüştürülen sonra okunamayan olduğu için 15, ASCII değeri karşılığı olan karakteri dönüştürüldü.

Bir ikili değer onaltılık bir gösterimini içeren bir karakter dizesini dönmek için aşağıdaki saklı yordam kullanılabilir:
   create procedure sp_hexadecimal
     @binvalue varbinary(255)
   as
   declare @charvalue varchar(255)
   declare @i int
   declare @length int
   declare @hexstring char(16)

   select @charvalue = '0x'
   select @i = 1
   select @length = datalength(@binvalue)
   select @hexstring = "0123456789abcdef"

   while (@i <= @length)
   begin

     declare @tempint int
     declare @firstint int
     declare @secondint int

     select @tempint = convert(int, substring(@binvalue,@i,1))
     select @firstint = floor(@tempint/16)
     select @secondint = @tempint - (@firstint*16)

     select @charvalue = @charvalue +
       substring(@hexstring, @firstint+1, 1) +
       substring(@hexstring, @secondint+1, 1)

     select @i = @i + 1

   end

   select 'sp_hexadecimal'=@charvalue
				

Örneğin, aşağıdaki komutu toplu iş ISQL ile çalıştırılır:
     declare @bin varbinary(255)
     select @bin = @@dbts
     execute sp_hexadecimal @bin
     select 'isql' = @bin
     go
				

çıktı aşağıdakine benzer döndürür:
     sp_hexadecimal
     ------------------------------------------------------------------
     0x01000000a60b0000

     (1 row affected)


     isql
     ------------------------------------------------------------------
     0x01000000a60b0000
     (1 row affected)
				

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 6.5 Service Pack 1
  • Microsoft SQL Server 6.5 Service Pack 2
  • Microsoft SQL Server 6.5 Service Pack 3
  • Microsoft SQL Server 6.5 Service Pack 4
  • Microsoft SQL Server 6.5 Service Pack 0.12acres
  • Microsoft SQL Server 6.5 Service Pack 0.12acres
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 7.0 Service Pack 1
Anahtar Kelimeler: 
kbmt kbinfo kbother KB104829 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:104829  (http://support.microsoft.com/kb/104829/en-us/ )