今回のブログでは、Xplentyで固定長のフィールドを扱う必要がある場合のTipsについて紹介します。
#固定長の文字列をフィールドごとに分割するには?
Selectコンポーネントで以下のように設定可能です。
式:Substring(フィールド,開始位置,終了位置)
使用例:
SUBSTRING('aaaaa00000あああああ11111',0,5)
> 'aaaaa'
SUBSTRING('aaaaa00000あああああ11111',5,10)
> '00000'
SUBSTRING('aaaaa00000あああああ11111',10,15)
> 'あああああ'
#固定長の文字列を生成するには?
Selectコンポーネントで以下のように設定可能です。
式:SPRINTF('%08d',数値)
使用例:
|式 |結果|説明|
|: |: |: |
|SPRINTF('%08d',1)| 00000001|8桁 (左を桁数分0で詰める)|
|SPRINTF('%05d',10)` | '00010' |5桁 (左を桁数分0で詰める)|
|SPRINTF('%5s','あ') |'あ' |5桁 (左を桁数分半角スペースで詰める)|
|SPRINTF('%-10s','あ')| 'あ_____'|10桁 (右を桁数分半角スペースで詰める)|
例外: 「1」 > 「10000」のように右にゼロを追加して詰めることはできません。
数値を桁数に応じて10,100,1000、10,000倍するなどの対応が必要です。
また、もし想定している桁数を超えたデータが入ってくるような場合、CASE文とLength関数、SUBSTRING関数を使用して、超過分の文字列を切り捨てることができます。
5桁を超える場合の制御例:
CASE WHEN Length(field1) > 5 THEN SPRINTF('%-5s'(SUBSTRING(field1,0,5)) ELSE SPRINTF('%-5s',field1) END