sql >> Database teknologi >  >> RDS >> Sqlserver

varbinær til varchar uden master.dbo.fn_varbintohexstr

Til md5 og sha1 kan du bruge hashbytes . For at få base64 kan du oprette en udf, der udfører konverteringen og bruge den i din beregnede kolonne.

Funktion 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

Funktion 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

Brug sådan her:

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

Unik varbinær begrænsningskolonne ved hjælp af hashbytes og en unik identifikatorkolonne

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. Sådan ændres kolonnesortering postgresql

  2. Er det muligt at lave en ROLLBACK i en MySQL-trigger?

  3. Bizart ydeevneproblem:Almindelige tabeludtryk i inline brugerdefineret funktion

  4. Hvordan kan jeg forespørge alle mine data inden for en afstand af 5 meter?