我有一个"Amount" numeric(18,2)
使用 SSMS v17 的加密列向导加密的列。列数据现在已加密。
但是,我有一个使用类似的视图:
create SampleView
as
Select
*, Amount * Rate as TotalAmount
From
SampleTable
Where
Amount > 0
go
该列Rate
的类型为numeric(18,8)
。
我无法创建此视图。它给出了数据类型不兼容的错误,因为一列是加密的,而另一列是明文。从我尝试过的各种排列中,我看到 > 0 的 Where 子句导致问题,并且 Select 列表中的 Amount*Rate 也不起作用。
相关的错误Amount*Rate
是(我评论了 Where 子句)
操作数类型冲突:使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'SampleDB_CEK', column_encryption_key_database_name = 'SampleDB') 加密的 numeric(18,2) 与 numeric 不兼容
相关的错误Where Amount>0
是(我在 Select 子句中评论了 Amount*Rate)
使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'SampleDB_CEK', column_encryption_key_database_name = 'SampleDB') 和 tinyint 加密的数据类型 numeric(18,2) 在大于运算符中不兼容。
我尝试了这些,但效果不佳:
Where Amount > cast(0 as numeric(18,2)
Select Amount * cast(Rate as numeric(18,2)
我们不能声明变量,因为它是视图。这种视图正在许多存储过程中使用。
任何想法表示赞赏。