我正在尝试将 Oracle 中的数字列转换为用前导零填充的字符串。我遇到的问题是我可以很好地转换为 Unicode 值,但是当我这样做时我必须指定长度。总长度将是 9 和零。如果数字只有 7 位或 8 位,我必须添加零。
问题是:当我在派生列块中将数字转换为 WSTR 时,我必须指定长度。如果我将长度指定为 9,我的填充零代码将不起作用。我假设是因为它认为它已经有 9 个字符长。我在表达式中添加了对 TRIM 的调用,希望它将值缩短为 7 或 8,然后填充零,但这不起作用。
有什么建议么?
编辑:这是我现在正在处理的表达式:
ISNULL([CERT_NUM]) ? "" : REPLICATE( "0", 9 - LEN((DT_WSTR, 9)[CERT_NUM] )) + (DT_WSTR, 9)[CERT_NUM]
来自以下答案的解决方案:
ISNULL(CERT_NUM) ? "" : RIGHT(REPLICATE("0",9) + (DT_WSTR,9)(DT_I4)CERT_NUM,9)
我将数字列转换为 int 以删除小数,转换为长度为 9 的字符串,连接 9 个零并取正确的 9 个字符。