Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

varbinary thành varchar w / o master.dbo.fn_varbintohexstr

Đối với md5 và sha1, bạn có thể sử dụng băm . Để có được base64, bạn có thể tạo một tệp udf thực hiện chuyển đổi và sử dụng tệp đó trong cột được tính toán của bạn.

Hàm 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

Hàm 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

Sử dụng như thế này:

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

Cột varbinary ràng buộc duy nhất sử dụng hashbyte và một cột bảo mật duy nhất

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. EF Code đầu tiên, làm thế nào để đăng ký cùng một tên bảng với các lược đồ khác nhau?

  2. Làm cách nào để tạo tập lệnh cho tất cả các bảng có một nét trong SQL Server 2000?

  3. Lỗi HTTP 404.0 Không tìm thấy khi xuất từ ​​báo cáo pha lê

  4. truy cập các cột chưa gỡ xuống của bảng và chèn chúng vào một cột mới

  5. Kết nối ứng dụng cốt lõi ASP.NET của bạn với phiên bản cục bộ của SQLServer