我有以下查询
UPDATE mytable
SET col1 = ENCRYPTBYPASSPHRASE ('Key', col2)
FROM mytable
Run Code Online (Sandbox Code Playgroud)
当我使用解密
SELECT CONVERT(VARCHAR(20), DECRYPTBYPASSPHRASE ('Key', col1))
FROM mytable
Run Code Online (Sandbox Code Playgroud)
返回的结果仅是第一个字符,例如,如果该字段包含“ Computer”,则结果仅为“ C”。
col2大概是nvarchar而不是varchar。尝试
SELECT CONVERT(NVARCHAR(20), DECRYPTBYPASSPHRASE ('Key', col1))
FROM mytable
Run Code Online (Sandbox Code Playgroud)
在nvarchar中,标准ASCII字母的代码点与ASCII相同,但用0x00字节填充。
当您将其强制转换为varchar时,它将被视为终止字符串的空字符。
小智 5
经过调查,我遇到了很多问题,所以我会发布我遇到的问题,这样任何人都可以从中受益。
希望这可以帮助那里的任何人!