【问题标题】:SSIS Expression equivalent to SQL ExpressionSSIS 表达式等效于 SQL 表达式
【发布时间】:2023-10-28 19:36:01
【问题描述】:

以下 SQL 表达式的 SSIS 等效表达式(派生列组件)是什么

cast(CASE WHEN len(cast(KPI as varchar(3))) > 2 THEN 
        CASE substring(cast(KPI as varchar(3)),3,1)
            WHEN 1 then left(cast(KPI as varchar(3)),1) + 'a'
            WHEN 2 then left(cast(KPI as varchar(3)),1) + 'b'
            WHEN 3 then left(cast(KPI as varchar(3)),1) + 'c'
            WHEN 4 then left(cast(KPI as varchar(3)),1) + 'd'
        END
        ELSE cast(KPI as varchar(3))
    END as VarChar(3)) as 'ColumnName'

这里的Kpi列是双精度浮点数据类型...

我在这里观察到的一件主要事情是 SSIS 表达式生成器中缺少 LEFT 字符串函数

SSIS 专家请看一看..

【问题讨论】:

  • 你说的SSIS表达式是什么?您想在哪个元素中使用此代码?您可以将此代码转换为 SSIS 派生列代码,但这就是重点,如果您可以在数据库源元素中使用此代码...
  • 我需要在派生列组件中使用它
  • 我不建议你在派生列上使用它。为什么不能在源查询中执行此操作。

标签: sql-server sql-server-2008 ssis ssis-2008


【解决方案1】:

我在我的系统上尝试了大约 1 个小时。终于找到了答案。希望对其他人有用

创建了一个新列 NewKPI 并将其转换为数据转换组件中的 dt_str(如 Justin 所述)

(DT_STR,3,1252)(LEN(NewKPI)

(我用的是子​​字符串而不是左)

感谢大家的帮助

【讨论】:

  • 如果您将 KPI 放入 Data Conversion 并在 Derived column 之前转换,您可能会节省一半的空间(您的代码将缩短 2 倍)。
  • 贾斯汀,感谢您的明智意见!!