sql base64解码函数

本文介绍了一个使用SQL实现的Base64解码函数。该函数接收一个Base64编码的字符串作为输入,并返回对应的解码后二进制数据。文章详细展示了如何逐字符解析Base64字符串并转换为原始数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数功能说明:

传入参数:任意一个base64编码后的密文

返回值: base64解码后的明文

/**

  base64 解码 sql实现

**/

ALTER FUNCTION [dbo].[f_base64_decode](
 @input varchar(max)   --base64编码后的字符串
)RETURNS varbinary(max)
AS
BEGIN
 DECLARE
 @base64 char(64),
 @pos int,
 @len int,
 @output varbinary(max);

 SELECT
 @base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
 @pos = 1,
 @len = LEN(@input),
 @output = 0x;

 IF @input = ''
 RETURN 0x;

 IF @len % 4 > 0 OR @len IS NULL
 RETURN NULL;

 WHILE @pos < @len
 BEGIN
 SELECT
 @output = @output
 + CONVERT(binary(1), ((v1 & 63) * 4 ) | ((v2 & 48) / 16))
 + CONVERT(binary(1), ((v2 & 15) * 16) | ((v3 & 60) / 4 ))
 + CONVERT(binary(1), ((v3 & 3 ) * 64) | ((v4 & 63) / 1 )),
 @pos = @pos + 4
 FROM(
 SELECT
 v1 = CHARINDEX(SUBSTRING(@input, @pos + 0, 1) COLLATE Chinese_PRC_BIN, @base64) - 1,
 v2 = CHARINDEX(SUBSTRING(@input, @pos + 1, 1) COLLATE Chinese_PRC_BIN, @base64) - 1,
 v3 = CHARINDEX(SUBSTRING(@input, @pos + 2, 1) COLLATE Chinese_PRC_BIN, @base64) - 1,
 v4 = CHARINDEX(SUBSTRING(@input, @pos + 3, 1) COLLATE Chinese_PRC_BIN, @base64) - 1
 )A;
 END;

 RETURN(SUBSTRING(@output, 1, @len / 4 * 3 - 3 + CHARINDEX('=', RIGHT(@input, 2) + '=')));
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值