选择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。