一、SqlServer 代码
USE [数据库名称]
GO
/****** Object: UserDefinedFunction [dbo].[Base64StrDecode] Script Date: 2020/4/7 16:57:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[Base64StrDecode](@Base64Str varchar(max))
RETURNs VARCHAR(max)
AS
BEGIN
declare @bin varbinary(max)
set @bin=cast(N'' as xml).value('xs:base64Binary(sql:variable("@Base64Str"))', 'varbinary(max)')
return Convert(varchar(max),@bin);
END
GO
二、后话
项目里查询数据库的部分都是别人封装好的类库,在传参时间参数时,一直报错。各种尝试无果,找不到原因。主要类库封装好用了几年没见说什么问题,所以当时就认为是MS SqlServer的bug,绕路把时间转成base64字符串传参,到数据库再解密,就写了这么一个函数。
最近闲了一些,发现是由于封装类库的时候,没有参数化导致的