Oracle の数値列を先行ゼロで埋められた文字列に変換しようとしています。私が抱えている問題は、Unicode 値に問題なく変換できることですが、その際に長さを指定する必要があります。全長は、ゼロを含めて 9 になります。数字が 7 桁または 8 桁しかない場合は、ゼロを追加する必要があります。
問題は、派生列ブロックで数値を WSTR にキャストするときに、長さを指定する必要があることです。長さを 9 に指定すると、ゼロを埋め込むコードが機能しません。すでに9文字の長さであると考えているため、私は推測しています。値を 7 または 8 に短縮してゼロを埋めることを期待して、式に TRIM の呼び出しを追加しましたが、うまくいきませんでした。
助言がありますか?
編集:これが私が今取り組んでいる式です:
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 文字を取得しました。