选择SQL server中ENCRYPTBYKEY函数内的查询
我试图通过打开对称密钥解密一个表列并将其存储在另一个表中,我发现下面的查询是错误的:选择SQL server中ENCRYPTBYKEY函数内的查询,sql,sql-server,select,subquery,Sql,Sql Server,Select,Subquery,我试图通过打开对称密钥解密一个表列并将其存储在另一个表中,我发现下面的查询是错误的: create table dbo.Secrets ( Secret varbinary(400) ) go create view dbo.openSecrets as select cast(decryptbykey(Secret) as varchar(200)) as OpenSecret from dbo.Secrets go open symmetric key [SymKey]
create table dbo.Secrets (
Secret varbinary(400)
)
go
create view dbo.openSecrets
as
select cast(decryptbykey(Secret) as varchar(200)) as OpenSecret
from dbo.Secrets
go
open symmetric key [SymKey]
DECRYPTION BY CERTIFICATE [SymCert]
go
insert into dbo.Secrets (Secret)
values (ENCRYPTBYKEY(KEY_GUID('SymKey'), (select col_test from dbo.tbltest)));
select *
from dbo.openSecrets;
close symmetric key [SymKey];
select *
from dbo.openSecrets;
我看到的错误是:SQL Server子查询返回的值超过1。当子查询后跟=、!=、时,不允许这样做=
这一行的问题在于:
values (ENCRYPTBYKEY(KEY_GUID('SymKey'), (select col_test from dbo.tbltest)));
预期产出:
这应该是解密中的select语句和解密外的select语句的输出
但我不知道如何修复内部select语句。有人帮忙吗 我假设dbo.tbltest在is中有多行。您希望dbo.tbltest中的select COLU test返回什么标量值?是,select语句存在问题。col_测试是加密的。所以我想解密它。我将在“现在插入问题”中发布预期输出的屏幕截图。。从dbo.tbltest中选择ENCRYPTBYKEYKEY\u GUID'SymKey',col\u test。我假设dbo.tbltest在is中有多行。您希望dbo.tbltest中的select COLU test返回什么标量值?是,select语句存在问题。col_测试是加密的。所以我想解密它。我将在“现在插入问题”中发布预期输出的屏幕截图。。从dbo.tbltest中选择ENCRYPTBYKEYKEY\u GUID'SymKey',col\u test。