我希望能够在以下场景中添加前导零 -
如果[帐户ID]< [帐户ID],我需要在[帐户ID]之前的前导零。 17 {申请= RCC,SEC,HOGAN CIS}
我需要在[帐户ID]之前的前导零如果([帐户ID] + [帐号])< 17 {申请= CLN}
如果([客户端密钥] + [客户端ID])< [客户端密钥],则需要在[客户端密钥]之前的前导零。 17 {申请= ITF}
我在派生列中定义了以下表达式 -
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]))
答案 0 :(得分:5)
我在处理添加前导字符时使用的一般策略是始终添加它们然后取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
退出该派生列,您将能够验证逻辑是否按预期工作,这使填充更容易。