SSIS 条件拆分错误 - 数据类型 DT_BYTES 不能与二元运算符“==”一起使用
Posted
技术标签:
【中文标题】SSIS 条件拆分错误 - 数据类型 DT_BYTES 不能与二元运算符“==”一起使用【英文标题】:SSIS Conditional Split Error - The data type DT_BYTES cannot be used with binary operator "==" 【发布时间】:2021-12-30 20:33:22 【问题描述】:在使用以下表达式配置条件拆分组件时:
[VersionStamp_Source] == (DT_I8)[VersionStamp_Destination]
我收到以下错误:
数据类型 DT_BYTES 不能与二元运算符“==”一起使用。
截图:
【问题讨论】:
VersionStamp_Source
和 VersionStamp_Destination
列的来源是什么?你的二进制字符串的长度是多少?
【参考方案1】:
如错误消息所示,条件拆分表达式中使用的列之一的数据类型为DT_BYTES
,无法使用二元运算符进行比较。
您需要将此列转换为另一种数据类型。正如official documentation 中提到的,DT_BYTES
可以转换为DT_I8
或字符串数据类型。
正如 @billinkc 在 cmets 中提到的,将 DT_BYTES
转换为字符串数据类型更可取,因为某些值无法转换为 8 字节整数。
要解决您的问题,请尝试使用以下表达式:
(DT_WSTR,255)[VersionStamp_Source] == (DT_WSTR,255)[VersionStamp_Destination]
另外,请确保为字符串转换运算符使用准确的长度。您可以将字符串长度增加到4000
【讨论】:
DT_BYTES 是否可以转换为整数完全取决于二进制数据的长度。如果这是标准散列算法的结果,那么即使是最差的 MD2/3/5 也会产生一个 16 字节的值,这是您可以存储在 8 字节有符号整数中的两倍。字符串转换虽然很有意义,但我会提倡用户使用 注意到了,@billinkc。我编辑了我的答案以提及这一点。非常感谢! 感谢 Hadi,使用 (DT_WSTR,255)[VersionStamp_Source] == (DT_WSTR,255)[VersionStamp_Destination] 解决了这个问题。 @Gidda 请mark the answer as accepted以上是关于SSIS 条件拆分错误 - 数据类型 DT_BYTES 不能与二元运算符“==”一起使用的主要内容,如果未能解决你的问题,请参考以下文章