Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Microsoft SQL 2016解码Base64列_Sql Server_Sql Server 2016 - Fatal编程技术网

Sql server Microsoft SQL 2016解码Base64列

Sql server Microsoft SQL 2016解码Base64列,sql-server,sql-server-2016,Sql Server,Sql Server 2016,我需要帮助解码数据库中的Base64密码列。当我将一列内容复制到其中时,它会完美地解码。我只需要在该列中约7000行上执行此操作。非常感谢您提供的任何帮助。如果您正试图在Management Studio(或直接在T-SQL)中实现这一点,那么您可以这样完成: declare @source varbinary(max), @encoded varchar(max), @decoded varbinary(max) set @source = convert(varbinary(max), '

我需要帮助解码数据库中的Base64密码列。当我将一列内容复制到其中时,它会完美地解码。我只需要在该列中约7000行上执行此操作。非常感谢您提供的任何帮助。

如果您正试图在Management Studio(或直接在T-SQL)中实现这一点,那么您可以这样完成:

declare @source varbinary(max), @encoded varchar(max), @decoded varbinary(max)

set @source = convert(varbinary(max), 'Hello Base64')

set @encoded = cast('' as xml).value('xs:base64Binary(sql:variable("@source"))', 'varchar(max)')
set @decoded = cast('' as xml).value('xs:base64Binary(sql:variable("@encoded"))', 'varbinary(max)')

select convert(varchar(max), @source) as source_varchar, @source as source_binary, @encoded as encoded, @decoded as decoded_binary, convert(varchar(max), @decoded) as decoded_varchar
从网站:

您可以使用以下()命令:

。。。但是,为此创建一个函数,然后:

create function fnDecodeBase64 (@encoded as varchar(max))
returns varchar(max)
as
begin

    declare @decoded varchar(max)

    set @decoded = cast('' as xml).value('xs:base64Binary(sql:variable("@encoded"))', 'varbinary(max)')

    return @decoded

end
因此,您可以使用:

select dbo.fnDecodeBase64(some_column) from Some_Table
您还可以使用:

select convert(varchar(max),cast(N'' as xml).value('xs:base64Binary(sql:column("t.SomeColumn"))', 'varbinary(max)')) as converted_64_column
from SomeTable as t

关键字:
sql:column
起作用

我发现,当我从列中粘贴任何值时,该代码都可以工作。现在我只需要知道如何使用它从password列中提取并作为解码结果放入一个新表中。谢谢。请用一些数据解释并解释预期结果。您的问题不清楚您是否尝试采取任何措施来解决您的问题?您是在尝试从SQL Server Management Studio解码,还是通过您自己的应用程序解码,还是什么?更多的信息将帮助你得到答案。
select convert(varchar(max),cast(N'' as xml).value('xs:base64Binary(sql:column("t.SomeColumn"))', 'varbinary(max)')) as converted_64_column
from SomeTable as t