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

  2. 内部属性に"-"(半角ハイフン)の位置を取得するフィールドを作成します。
    ここでは「枝番の有無」という名称のフィールド(スタイル:整数型)とします。

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

  3. <OK>ボタンを押し、計算結果を確認します。

    上の画面では、枝番のない「地番:13」では、計算式によって「-1」が返っているのが分かります。
    また、それ以外の、例えば「地番:12-3」では「2」が、「地番:1342-1」では「4」が返っています。

    ▼ 「地番:12-3」の場合
    n番目0123
    地番12-3
    ▼ 「地番:1730-4」の場合
    n番目012345
    地番1342-1

  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)""