更新: 看来可能有一些证书或规则在带有enrypted列数据的打开查询上运行。我发现以下内容产生了一个未加密的值concat&more 39; more'。我将不得不与我们的DBA核实可能导致此行为的原因。
case when s.EncryptedColumn is not null then concat(s.[EncryptedColumn], ' more') else s.[RawColumn] end
我正在尝试对varbinary(16)
列进行简单的比较,但是我无法得到返回true的结果。
这就是我的尝试:
尝试1:
select
s.[EncryptedColumn],
(case when s.[EncryptedColumn] is not null
then s.[EncryptedColumn]
else s.[RawColumn]
end) as 'result'
结果1:加密数据,原始数据
尝试2:
select
datalength(s.[EncryptedColumn]),
(case when datalength(s.[EncryptedColumn]) > 0
then s.[EncryptedColumn]
else s.[RawColumn]
end) as 'result'
结果2:加密数据长度(16),原始数据
有什么想法吗?
答案 0 :(得分:0)
如果我做对了,你应该看看here:
使用ISNULL(DATALENGTH(内容), - 1)代替,以便你可以 区分长度0和NULL。或者只使用DATALENGTH(内容)
答案 1 :(得分:0)
更新: 看来可能有一些证书或规则在带有enrypted列数据的打开查询上运行。我发现以下内容产生了一个未加密的值concat&more 39; more'。我将不得不与我们的DBA核实可能导致此行为的原因。
case when s.EncryptedColumn is not null then concat(s.[EncryptedColumn], ' more') else s.[RawColumn] end