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

varbinary ke varchar tanpa master.dbo.fn_varbintohexstr

Untuk md5 dan sha1 Anda dapat menggunakan hashbytes . Untuk mendapatkan base64, Anda dapat membuat udf yang melakukan konversi dan menggunakannya di kolom yang dihitung.

Fungsi BinToBase64:

create function BinToBase64(@Bin varbinary(max)) returns varchar(max) as
begin
  return CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@Bin")))', 'VARCHAR(MAX)')
end

Fungsi BinToHexString:

create function BinToHexString(@Bin varbinary(max)) returns varchar(max) as
begin
  return '0x' + cast('' as xml).value('xs:hexBinary(sql:variable("@Bin") )', 'varchar(max)'); 
end

Gunakan seperti ini:

create table TestTable 
(
  Col1 varbinary(max), 
  Col2 as dbo.BinToHexString(hashbytes('MD5', Col1)),
  Col3 as dbo.BinToHexString(hashbytes('SHA1', Col1)),
  Col4 as dbo.BinToBase64(Col1),
)
insert into TestTable values (12345)

select *
from TestTable

Kolom varbinary batasan unik menggunakan hashbytes dan kolom pengenal unik

create table TestTable 
(
  ID uniqueidentifier default(newid()),
  Col1 varbinary(max), 
  Col2 as coalesce(hashbytes('MD5', Col1), cast(ID as varbinary(8000))) persisted
)

create unique index IX_TestTable_Col2 on TestTable(Col2)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat mentransmisikan TEXT ke XML di SQL Server

  2. ON adalah bagian dari sintaks

  3. Bagaimana cara membuat instance default setelah membuat instance bernama?

  4. Apakah ada alat gratis untuk menghasilkan skrip 'INSERT INTO' di MS SQL Server?

  5. Dapatkah saya menjalankan paket SSIS dengan edisi SQL Server Express atau Web atau Workgroup?