【計算フィールド】使用例(3) 文字列の分解
計算フィールドではフィールド名称と計算式を組み合わせる事により、その計算結果をセルに表示させる事ができます。
今回は、「計算フィールドで123-45地番を本番123と枝番45のように別のフィールドに分けたいのですが良い方法はありますか?」という御意見に対応して作られた組み込み関数 find を使って、一連の文字列として入力されている属性(地番)を親番と枝番に分けて表示させる方法をご紹介します。
※これはあくまでも一例です。
- ■ 設定方法
-
- 以下のDBで「地番」フィールド(スタイル:文字型)があるとします。
- 内部属性に"-"(半角ハイフン)の位置を取得するフィールドを作成します。
ここでは「枝番の有無」という名称のフィールド(スタイル:整数型)とします。

ここで設定した計算式
find({地番},"-",1)
は、「地番」フィールドに"-"という文字が1番目に現れた位置を返す、という意味です。
"-"がない場合(=枝番なしの場合)は、"-1"を返します。
- <OK>ボタンを押し、計算結果を確認します。

上の画面では、枝番のない「地番:13」では、計算式によって「-1」が返っているのが分かります。
また、それ以外の、例えば「地番:12-3」では「2」が、「地番:1342-1」では「4」が返っています。
▼ 「地番:12-3」の場合
▼ 「地番:1730-4」の場合
- この結果を用いて、「地番」フィールドの表示を場合分けします。
- 「親番」フィールド
- 以下のように計算式を設定します。
- 「枝番の有無」が「-1」だった場合(=枝番なしの場合)→「地番」フィールドの値をそのまま表示
- 「枝番の有無」が「-1」ではない場合(=枝番ありの場合)→「地番」フィールドの値を、"-"の前まで表示
cond( | a | , | b | , | c | ) |
ne({枝番の有無},"-1") | mid({地番},0,{枝番の有無}) | {地番} |

「枝番の有無」フィールドを作らず、「親番」&「枝番」フィールドの{枝番の有無}というフィールド指定のところに「枝番の有無」で計算している式を入れ、一つにまとめる事も可能です。
《例》 「親番」→cond(ne(find({地番},"-",1),"-1"),mid({地番},0,find({地番},"-",1)),{地番})
- 「枝番」フィールド
- 以下のように計算式を設定します。
- 「枝番の有無」が「-1」だった場合(=枝番なしの場合)→""(空文)表示
- 「枝番の有無」が「-1」ではない場合(=枝番ありの場合)→「地番」フィールドの値を、"-"の後から右端まで表示
cond( | a | , | b | , | c | ) |
ne({枝番の有無},"-1") | mid({地番},{枝番の有無}+1,len({地番})-1) | "" |

|