SSIS Conditional Split错误:DT_BYTES类型不可与二元运算符"=="一同使用
SSIS Conditional Split 二进制类型等值比较报错解决方案
报错原因
你编写的表达式中,等值运算符==两侧数据类型不匹配:仅对右侧的[VersionStamp_Destination]做了DT_I8类型强转,左侧的[VersionStamp_Source]仍为DT_BYTES二进制类型,SSIS不支持二进制类型与整数类型直接执行等值比较。
完整报错信息:The data type DT_BYTES cannot be used with binary operator "==".
修复方案
- 方案1:双端强转为DT_I8后比较
如果你使用的是SQL Server原生的rowversion/timestamp类型(固定8字节长度,刚好匹配DT_I8的存储长度,无截断风险),直接将两侧字段都强转为DT_I8即可,调整后的表达式如下:(DT_I8)[VersionStamp_Source] == (DT_I8)[VersionStamp_Destination] - 方案2:使用内置二进制比较函数
如果你的二进制字段长度不固定,或强转后出现截断报错,可以直接调用SSIS内置的EQUAL函数逐字节比对二进制内容,无需类型转换:EQUAL([VersionStamp_Source], [VersionStamp_Destination])
内容的提问来源于stack exchange,提问作者Gidda
相关产品推荐
相关产品推荐

