gpt4 book ai didi

mysql - SSIS 相等运算符未按预期工作

转载 作者:行者123 更新时间:2023-11-29 08:33:47 24 4
gpt4 key购买 nike

我有一个 SSIS 包,它连接到 MySQL 数据库,该数据库有一个 tinyint(1) 字段,该字段设置为值 4,我正在检查查看数据库中该值是否为 4,因为如果它已设置为 4,则它不应根据传入的平面文件进行更改,但它似乎不是工作。

它不应该更新状态,因为该字段设置为 4 但我想我只是不明白为什么该表达式不起作用。我已经尝试了 SSIS 的所有不同 int 类型,但这并不重要,因为它总是将状态设置为 1。根据快速谷歌搜索,tinyint 应该是一个无符号 1 字节 int,这就是为什么我将其转换为 DT_UI1

来自平面文件的传入值,第一个是产品,最后一个是状态

"039414","*****","*****","*****","*****","*****","*****","*****"," "

数据库中的现有值,第一个是产品,第二个是状态

039414  4

我通过以下派生列表达式处理状态,基本上如果没有值它应该是 1 否则它应该是 4

LEN(TRIM(Status)) > 0 ? (DT_UI1)4 : (DT_UI1)1

这是我用来设置product_status的派生列表达式(products_status是数据库中的实际字段,prod_status是传入平面文件中的状态):

((DT_UI1)products_status == (DT_UI1)4) || ISNULL(prod_status) ? (DT_UI1)4 : (DT_UI1)prod_status

我期望发生的是一些产品应该保持 4 状态,但正在更新为 1,有人知道为什么吗?

编辑:

我尝试将表达式更改为以下内容,但没有成功。

(DT_UI1)products_status == (DT_UI1)4 || ISNULL(prod_status) ? (DT_UI1)4 : (DT_UI1)prod_status

((DT_UI1)products_status == (DT_UI1)4 || ISNULL(prod_status)) ? (DT_UI1)4 : (DT_UI1)prod_status

只是基本测试

(DT_UI1)products_status == (DT_UI1)4 ? (DT_UI1)4 : (DT_UI1)prod_status

解决方案:

我最终将查询中的字段转换为整数,因为它被作为 boolean 而不是 int 拉入

CAST(products_status AS SIGNED)

然后将我的表达式更改为以下内容,并且按预期工作

(products_status == 4 || ISNULL(prod_status)) ? (DT_I4)4 : prod_status

最佳答案

不确定这里的优先级,但是您不认为您需要在立即 if 中的条件周围添加额外的括号吗:

( ((DT_UI1)products_status == (DT_UI1)4) || ISNULL(prod_status) ) ? (DT_UI1)4 : (DT_UI1)prod_status

看起来它可能会返回“true”,有时会呈现为 1。

更新

这里是 Data Viewer 的链接它可以让您查看 SSIS 分配给列的值并帮助您分析此类情况。

关于mysql - SSIS 相等运算符未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com