Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

varbinary do varchar bez master.dbo.fn_varbintohexstr

W przypadku md5 i sha1 możesz użyć hashbytes . Aby uzyskać base64, możesz utworzyć udf, który wykona konwersję i użyć go w swojej obliczonej kolumnie.

Funkcja 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

Funkcja 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

Użyj w ten sposób:

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

Kolumna zmienna z unikalnym ograniczeniem używająca hashbajtów i kolumny z unikalnym identyfikatorem

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. Czy LINQ-to-SQL może pominąć nieokreślone kolumny podczas wstawiania, aby była używana wartość domyślna bazy danych?

  2. SQL Server:Filtruj dane wyjściowe sp_who2

  3. Jaki jest najlepszy sposób pobierania rekordów wsadowo z SQL Server

  4. Zarządzaj dostępem do encji i uprawnieniami za pomocą Entity Framework

  5. Wydajność SQL count(*)