EncryptByPassPhrase舍入大于6位的数字

时间:2018-05-21 05:32:56

标签: sql-server encryption sql-server-2012

SQL Server中的EncryptByPassPhrase和Decryptbypassphrase会舍入值,如图所示。我们该如何解决这个问题?我们正在使用SQL Server 2012

DECLARE @EncryptedValue varbinary(8000); 
DECLARE @MyFloat float;

SET     @MyFloat = 1204787;  

SELECT  @EncryptedValue = EncryptByPassPhrase('x12#', CAST(@MyFloat AS varchar(8000)));

SELECT  @MyFloat as 'before', @EncryptedValue,   
        CAST(CAST(decryptbypassphrase('x12#', @EncryptedValue) as varchar(8000)) as float)  as 'after';

enter image description here

1 个答案:

答案 0 :(得分:0)

正如@Damien在评论中提到的,这是由于使用'CAST'时SQL截断了float值。我们需要改用STR。 More info