Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

varbinary към varchar без master.dbo.fn_varbintohexstr

За md5 и sha1 можете да използвате хешбайтове . За да получите base64, можете да създадете udf, който извършва преобразуването, и да го използвате във вашата изчислена колона.

Функция 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

Функция 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

Използвайте така:

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

Варбинарна колона с уникално ограничение, използваща хешбайтове и колона с уникален идентификатор

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. Как sql сървърът сортира вашите данни?

  2. Свързване към SQL Server в ASP.NET

  3. Отстраняване на неизправности при предоставяне на променлива памет в SQL Server

  4. Възможно ли е да се предаде име на таблица в съхранена процедура и да се използва без функцията Exec?

  5. Получаване на резултатите от съхранената SQL процедура във формат data.frame с помощта на RODBC