我想转换时间写入平面文件源的方式,所以它实际上看起来像时间(如果这是有道理的)。SSIS:如果其他派生列表达式
现在我把它当作1215
,630
,10
,1
,..等,所以它可以是4-1个字符长,所以我需要将其转换取决于列的长度。
我在Derived Column中做了这个表达式,但是我似乎无法使它工作,不确定如果我的语法错误或者是什么,表达式看起来像这样,但是我得到错误:
(LEN([TIME OCC]) == 4) ? (SUBSTRING([TIME OCC],1,2) + ":" + SUBSTRING([TIME OCC],3,2)) : (LEN([TIME OCC]) == 3) ? (SUBSTRING([TIME OCC],1,1) + ":" + SUBSTRING([TIME OCC],2,2)) : (LEN([TIME OCC]) == 2) ? (SUBSTRING([TIME OCC],1,2) + ":00") : (LEN([TIME OCC]) == 1) ? (SUBSTRING([TIME OCC],1,1) + ":00")
当我只有两个值做到像下面这似乎很好地工作:
LEN([TIME OCC]) == 3 ? SUBSTRING([TIME OCC],1,1) + ":" + SUBSTRING([TIME OCC],2,2) : SUBSTRING([TIME OCC],1,2) + ":" + SUBSTRING([TIME OCC],3,2)
我希望得到任何帮助,谢谢!
你会得到什么错误信息? –
“该表达式可能包含无效标记,不完整标记或无效元素,它可能不完整,或者可能缺少所需元素的一部分,例如括号” - 我尝试了一堆不同的元素写作表达方式的方式并没有一个似乎起作用。 –
“10”是指“00:10”吗?最简单的做法是左边填零,然后分割并放入':'。然后你不需要一个伟大的嵌套表达式 –