全角半角文字が混在した文字列を検索する

最終更新日: 2022年3月8日
R8 | R9

Wagby は標準で「入力フィルタ」という機能を提供しています。この機能を用いると文字列型の項目はデータベースに保存されるときに全角文字が半角文字に自動的に置換されます。

しかしここでは入力フィルタ機能を使わず、全角半角文字が混在した文字列項目を想定します。 このような状態で、例えば「JasmineSoft」(全角文字かつ大文字小文字が混在)で登録された項目に対して、検索文字列「jasminesoft」(半角文字かつすべて小文字)で検索できるようにします。

ここでは「会社名称」項目を例に説明します。会社名「JasmineSoft」と登録します。全角文字です。

顧客詳細表示画面

半角文字で検索してもヒットします。

半角文字での検索

大文字小文字の違いがあってもヒットします。

すべて小文字での検索

すべて大文字でもヒットします。

すべて大文字での検索

途中の空白も無視して検索します。

途中の空白も無視する

定義方法

  1. 定義のポイントは「会社名称」を2項目用意することです。
    「companyname」は通常の入力及び一覧表示用です。
    もう一方の「companyname2」は検索条件用として用意し、入力画面では隠し項目とします。
    モデル項目一覧

    companynameとcompanyname2の関係性は下図の通りです。

    companyname項目とcompanyname2項目の関係性
  2. 入力フィルタの設定は、「companyname」「companyname2」ともに「文字列(最小限)」としています。
    これによって、全角で入力された文字列はそのままデータベースに格納されます。
    入力フィルタを文字列(最小限)にする
  3. 以降の設定は、すべて「companyname2」項目に対して行います。
    customerkana2は、入力画面で隠し項目とします。
    「入力制御 > 隠し項目」で、「全画面」にチェックを入れます。
    入力画面で隠し項目とする
  4. 同様に、出力画面でも隠し項目とします。
    「出力制御 > 詳細画面 > 共通」で、「隠し項目にする」にチェックを入れます。
    出力画面で隠し項目とする

    ワンポイント

    CSVダウンロード機能を有効にした場合は、「出力制御 > その他」より「CSVに出力する」のチェックをはずしてください。
    これにより、CSVダウンロード出力時にこの項目が含まれなくなります。

    CSV出力を行わない
  5. 「詳細」タブを開き、自動計算式に以下の通り入力します。

    また、この companyname2 項目で検索を行うため、データベースに保存します。

    ASC(
            LOWER(
              SUBSTITUTE(
                SUBSTITUTE(${companyname}," ",""),
                " ",""
              )
            )
          )
    計算式の設定

    ASC 関数は全角文字を半角文字に変換します。
    LOWER 関数はアルファベットを小文字に変換します。
    最初の SUBSTITUTE 関数は半角空白を空文字に置換します。もう一つの SUBSTITUTE 関数は全角空白を空文字に置換します。

  6. 検索の初期値として、検索画面で入力された文字(検索条件文字列)を正規化します。
    データベースに格納された文字列も同じように正規化されているため、必ずヒットするようになります。
    ASC(
            LOWER(
              SUBSTITUTE(
                SUBSTITUTE(${companyname2}," ",""),
                " ",""
              )
            )
          )
    検索時の「初期値」の設定