我想插入一个表的位列0或1,0,其中没有文本,1有。我通过SSIS中的excel源提取数据。在下面的示例中,它应该:
Client 1: 1 1 1
Client 2: 1 0 1
它在excel中的表现如何:
Products: Ball Bicycle Bat
Client 1: Ball Bicycle Bat
Client 2: Ball Bat
Client 3: Ball
Client 4: Bicycle Bat
在SSIS中实现这一目标的任何方法?
答案 0 :(得分:1)
您需要使用一些项目来完成此任务。
派生列将允许您创建这些新的布尔列。派生列使用Expression来计算值。您需要在创建新列时指定列名称。您还需要确保数据类型符合预期。
第一个是无文本是否为NULL,空字符串或填充字符串。知道当前行是否满足其中一个条件将告诉我们是否需要将新列1或0。
值为NULL或NOT NULL。如果它不为null,那么我们需要担心它是否为空/填充。我们通过ISNULL
表达式测试NULL。
布尔OR表示为||
通过==
我们使用LEN
表达式检查空字符串。
我们需要从列中删除所有尾随空格,以查看它是否减少为空字符串。我们将使用RTRIM
来完成此任务。
Expression必须求值,但我们有条件(if)逻辑。我们解决这个问题的方法是三元运算符(boolean test) ? (true expr) : (false expr)
布尔值的SSIS系统数据类型为DT_BOOL
演员表由(DT_TYPE) VALUE
将派生列组件添加到数据流中。列名为Col1HasText
为了便于阅读而添加了换行符
(isnull([Col1]) || LEN(RTRIM([Col1])) == 0) ?
((DT_BOOL) 0) :
((DT_BOOL) 1)
英文版:如果Col1为null或者Col1的右边裁剪版本的长度为零,那么我们要将一个数据类型转换为DT_BOOL(布尔值)。否则,将零转换为数据类型DT_BOOL