SSI派生前导零的列填充 [英] SSIS Derived column padding of leading zeroes

查看:23
本文介绍了SSI派生前导零的列填充的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望能够在以下方案中添加前导零-

  1. 如果[Account ID]<;17{对于应用程序=RCC,SEC,Hogan CIS}

  2. ,则[Account ID]前需要前导零
  3. 我在[Account ID]if([Account ID]+[Account Number])<;17{for Application=CLN}

  4. 前需要前导零
  5. 我在[Client Key]if([Client Key]+[Client ID])<;17{for Application=ITF}

  6. 前需要前导零

我在我的派生列中定义了以下表达式-

 LTRIM(RTRIM(APPLICATION == "RCC" || APPLICATION == "SEC" ? APPLICATION + "|" + [ACCOUNT ID] : APPLICATION == "HOGAN CIS" ? (HOGAN_Hogan_Alpha_Product_Code == "DDA" ? "DDA" : "TDA") + "|" + [ACCOUNT ID] : APPLICATION == "ITF" ? APPLICATION + "|" + [CLIENT KEY] + [CLIENT ID] : APPLICATION == "CLN" ? APPLICATION + "|" + [ACCOUNT ID] + [ACCOUNT NUMBER] : APPLICATION + "|" + [ACCOUNT NUMBER]))

推荐答案

填充字符串

我在处理添加前导字符时使用的一般策略是始终添加它们,然后取最右边的N个字符。我发现它大大简化了你的逻辑。

RIGHT(REPLICATE('0', 17) + [MyColumn], 17)

这将生成17个零,将其添加到我的列中,然后切掉最后17个字符。如果MyColumn已经是17个字符,则不会完成任何有效的工作。如果为空,则现在的值为17个零。

选择

在您的例子中,我首先尝试添加一个派生列,以确定APPLICATION属于哪个逻辑块。与您现有的三元表达式非常相似。

(APPLICATION == "CLN") ? 10 : 
    (APPLICATION == "ITF") ? 20 :
    (APPLICATION == "RCC" | APPLICATION == "SEC" ....) ? 30 : 40

在派生的列中,您将能够验证逻辑是否按预期工作,从而使填充更容易。

这篇关于SSI派生前导零的列填充的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆