gpt4 book ai didi

sql - varbinary 到 varchar w/o master.dbo.fn_varbintohexstr

转载 作者:行者123 更新时间:2023-12-01 01:27:43 24 4
gpt4 key购买 nike

有没有办法在 MS SQL Server 2005 上没有 master.dbo.fn_varbintohexstr 函数的情况下将 varbinary 转换为 ASCII varchar 字符串(base64、md5、sha1 - 不管)?因为它不能在计算列内使用。

CONVERT 和 CAST 返回非 ASCII 字符串。

谢谢,

丹尼斯。

最佳答案

对于 md5 和 sha1,您可以使用 hashbytes .要获得 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

使用 hashbytes 和 uniqueidentifier 列的唯一约束 varbinary 列
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)

关于sql - varbinary 到 varchar w/o master.dbo.fn_varbintohexstr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com