有没有办法在SSIS派生列中复制下面的表达式?
SELECT CASE
WHEN LEN(column1) > 8
THEN
column1
ELSE
REPLICATE('0', 18 - LEN(column1)) + column1
END AS column1
FROM myTable
Run Code Online (Sandbox Code Playgroud)
如果值的长度小于8个字符,我想将column1的值填充为0
bil*_*nkc 11
SSIS表达式语言支持三元运算符 ? :
(LEN([column1]) > 8) ? column1 : replicate("0", (18 - LEN([column1]))) + [column1]
Run Code Online (Sandbox Code Playgroud)
该表达式应该有效,但它不起作用,因为REPLICATE调用将提供元数据,说明它是4k nvarchar字符(限制).如果你让它以这种方式工作是不对的,请评论并且我将破解表达式以在连接之前调整复制的输出column1
更简单的方法是始终在表达式中添加8个前导零,然后从右侧切掉它.
RIGHT(REPLICATE("0",8) + column1,8)
Run Code Online (Sandbox Code Playgroud)
您可能需要18秒,因为您的示例似乎使用18但概念将是相同的.