概要
- AS400のDB2/400というDBは、容易にフィールドを追加したり、変更したりするのが非常に面倒なように思います。なので、現行のテーブルには予備フィールドがあったりするわけですが、現在では桁区切り指定で使用していたりします。(予備フィールドの3〜5桁の3桁が、○○区分コードなど)
- RPGLEであれば、データ構造を使って桁区切りをして参照/更新が容易にできますが、SQLではどうなんだろうと調べた結果、簡単にできることがわかりました。無知って怖いです!
コマンド例
SELECT文
SUBSTR関数を使用します。→ SUBSTR(フィールド名,開始位置,抽出桁数)
SELECT文
SELECT SHAINID,NAMAE,RESERVE01 FROM MSHAIN WHERE SUBSTR(RESERVE01,2,2)='11'
社員 コード 社員名(漢字) 予備 フィールド 0001 佐藤 111 0003 田中 11 0021 スミス 11
SELECT SHAINID,NAMAE,SUBSTR(RESERVE01,2,2) FROM MSHAIN WHERE SUBSTR(RESERVE01,2,2)='11'
社員 コード 社員名(漢字) SUBSTR 0001 佐藤 11 0003 田中 11 0021 スミス 11
UPDATE
文字連結子を使って文字列を編集します。下記の例では、予備フィールド(10桁)の2〜3桁目に’22′をセットし、それ以外は変更されず、更新前と同じ値がセットされます。
UPDATE MSHAIN SET RESERVE01 = SUBSTR(RESERVE01,1,1) || '22' || SUBSTR(RESERVE01,4,7) WHERE SHAINID='0021'