我在 sqlserver 中有一个表,我的表有一个字符串字段,例如 FirstName(这只是示例!)。在插入数据库之前,此字段“EncryptByPassPhrase”。
Before encode: Ali
After encode: 0x010000001D905174BB7947AE1C600A4AB564A123310F92C21C9A4221
Run Code Online (Sandbox Code Playgroud)
现在我会在这个字段上搜索,例如我会得到所有包含字符“Al”的字段。
select * from EncodeTest e
where dbo.Decoder(e.FirstName) like '%Al%'
Run Code Online (Sandbox Code Playgroud)
但是这种方式在许多记录上非常慢。请帮助我寻求最佳解决方案。
谢谢。
declare @EncodedName varbinary(max)
select @EncodedName =EncryptByPassPhrase('key', cast( @Name as varbinary(max)) )
declare @DecodedName nvarchar(max)
select @DecodedName=convert(varchar(100),DecryptByPassPhrase('key',cast( @EncodedName as varbinary(max)) ))
select * from EncodeTest e
where dbo.Decoder(e.FirstName) like '%Al%'
Run Code Online (Sandbox Code Playgroud)