Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Konversikan BINARY yang disimpan sebagai VARCHAR ke BINARY

Hasil yang Anda dapatkan adalah karena string "0003f80075177fe6" (sebuah VARCHAR value) dikonversi ke poin kode, dan poin kode ini disajikan sebagai nilai biner. Karena Anda mungkin menggunakan susunan yang kompatibel dengan ASCII, itu berarti Anda mendapatkan poin kode ASCII:0 adalah 48 (30 hex), f adalah 102 (66 hex) dan seterusnya. Ini menjelaskan 30 30 30 33 66 38 30 30...

Yang ingin Anda lakukan adalah mengurai string sebagai representasi heksadesimal dari byte (00 03 f8 00 75 71 77 fe 66 ). CONVERT menerima parameter "gaya" tambahan yang memungkinkan Anda mengonversi hexstring:

SELECT CONVERT(BINARY(16), '0003f80075177fe6', 2)

Gaya 2 mengonversi hexstring menjadi biner. (Gaya 1 melakukan hal yang sama untuk string yang dimulai dengan "0x", yang tidak terjadi di sini.)

Perhatikan bahwa jika ada kurang dari 16 byte (seperti dalam kasus ini), nilainya diisi dengan nol (0x0003F80075177FE60000000000000000 ). Jika Anda membutuhkannya dengan bantalan kiri, Anda harus melakukannya sendiri:

SELECT CONVERT(BINARY(16), RIGHT(REPLICATE('00', 16) + '0003f80075177fe6', 32), 2)

Terakhir, perhatikan bahwa literal biner dapat ditentukan tanpa konversi hanya dengan mengawalinya dengan "0x" dan tidak menggunakan tanda kutip:SELECT 0x0003f80075177fe6 akan mengembalikan kolom tipe BINARY(8) . Tidak relevan untuk kueri ini, tetapi hanya untuk kelengkapan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dapatkan hanya baris terakhir di beberapa entri setiap hari di TSQL

  2. Bagaimana cara terhubung ke database SQL Server dari JavaScript di browser?

  3. memasukkan ke tabel lokal dari prosedur tersimpan yang ditautkan

  4. SQL Server PILIH TERAKHIR N Baris

  5. SSMS Kini Hadir dengan Azure Data Studio