在 SSIS 中编写案例语句

Posted

技术标签:

【中文标题】在 SSIS 中编写案例语句【英文标题】:witing a case statement in SSIS 【发布时间】:2019-06-07 14:40:00 【问题描述】:

我正在设置一个包以将 Excel 电子表格导入 SQL 数据库。电子表格中有一个列,我想在其中挑选关键字,然后将它们放入新列中。在 SQL 中,它就像一个基本的 case 语句

case when column_A like '%Norwich%' then 'Norwich'
    when column_A like '%Ipswich%' then 'Ipswich'
    when column_A like '%Cambridge%' then 'Cambridge'
    else 'NA'
end as NewColumn

我已经尝试了以下方法,但我猜它不能正常工作,因为我现在有通配符

[Report Title] == "Norwich" ? "Norwich" : [Report Title] == "Ipswich" ? "Ipswich" : [Report Title] == "Cambridge" ? "Cambridge" : "NA"

例子:

Report Title                      NewColumn

Norwich is in Norfolk             Norwich
Cambridge is in Cambridgeshire    Cambridge
Suffolk is home to Ipswich        Ipswich

【问题讨论】:

SSIS Derived Column (if then...else)的可能重复 【参考方案1】:

您必须使用带有嵌套条件运算符的FINDSTRING() 函数来实现:

FINDSTRING([Report Title],"Norwich",1) > 0 ? "Norwich" : (
FINDSTRING([Report Title],"Ipswich",1) > 0 ? "Ipswich" : (
FINDSTRING([Report Title],"Cambridge",1) > 0 ? "Cambridge" : "NA"))

参考文献

Nested Conditional Operators in an SSIS Derived Column FINDSTRING (SSIS Expression)

【讨论】:

以上是关于在 SSIS 中编写案例语句的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将数据编写为 SSIS 包中的 Insert 语句?

从 SSIS 调用时删除语句失败

SSIS 数据流,忽略 SQL 语句中的 where 子句

SSIS高级转换任务—执行SQL语句

选择语句从 Netezza 数据库中获取数据并插入 SQL Server 数据库 (SSIS)

SSIS 执行 SQL 任务,受 MERGE 语句影响的行(Oracle 和 SQL Server)