Saya ingin menulis kueri T-SQL di mana saya menyandikan string sebagai string Base64. Anehnya, saya tidak dapat menemukan fungsi T-SQL asli untuk melakukan pengkodean Base64. Apakah fungsi asli ada? Jika tidak, apa cara terbaik untuk melakukan pengkodean Base64 di T-SQL?
sql-server-2005
tsql
encoding
base64
Yakub
sumber
sumber
Jawaban:
Saya tahu ini telah dijawab, tetapi saya hanya menghabiskan lebih banyak waktu daripada yang saya akui datang dengan pernyataan SQL baris tunggal untuk mencapai ini, jadi saya akan membagikannya di sini jika ada orang lain yang perlu melakukan hal yang sama:
Saya harus menggunakan tabel yang dihasilkan subkueri di kueri (pengkodean) pertama karena saya tidak dapat menemukan cara untuk mengonversi nilai asli ("TestData") menjadi representasi string hex ("5465737444617461") untuk disertakan sebagai argumen untuk xs: hexBinary () dalam pernyataan XQuery.
Saya harap ini membantu seseorang!
sumber
xs:base64Binary(sql:column("bin"))
(tanpaxs:hexBinary
panggilan) juga berfungsi. Sangat membantu!SELECT CAST( CAST(N'' AS XML).value( 'xs:base64Binary("LgkoCU0JJAlNCTAJQAkyCUcJIAAJCTIJTQkfCU0JLwk+CQ8JIAA4CT4JJAkgABsJKAlNCWQJ")' , 'VARBINARY(MAX)' ) AS NVARCHAR(MAX) ) UnicodeEncoding ;
Cara termudah dan terpendek yang dapat saya temukan untuk SQL Server 2012 dan yang lebih baru adalah
BINARY BASE64
:Untuk Base64 menjadi string
(atau
nvarchar(max)
untuk string Unicode)sumber
Berikut adalah modifikasi jawaban mercurial yang menggunakan subquery pada decode juga, memungkinkan penggunaan variabel di kedua contoh.
sumber
Berikut adalah kode untuk fungsi yang akan bekerja
Contoh penggunaan:
sumber
Saya menyukai jawaban @ Slai. Saya hanya perlu membuat sedikit modifikasi pada satu baris yang saya cari. Saya pikir saya akan membagikan apa yang saya dapatkan jika itu membantu orang lain tersandung ke halaman ini seperti yang saya lakukan:
sumber
VARBINARY
menjadiVARBINARY(56)
, dan kemudian berhasil.Tidak, tidak ada fungsi asli, metode ini telah berhasil untuk saya di masa lalu: http://www.motobit.com/help/scptutl/sa306.htm
jadi metode ini:
http://www.vbforums.com/ showthread.php? t = 554886
sumber
Ini berguna untuk encode dan decode.
Oleh Bharat J
sumber
Saya membuat skrip untuk mengubah hash yang ada yang dikodekan dalam base64 menjadi desimal, semoga bermanfaat:
sumber
Anda dapat menggunakan hanya:
kemudian setelah encoding Anda akan menerima teks 'MjE4Nqk5'
sumber