全角半角文字が混在した文字列を検索する
最終更新日: 2022年3月8日
R8 | R9
Wagby は標準で「入力フィルタ」という機能を提供しています。この機能を用いると文字列型の項目はデータベースに保存されるときに全角文字が半角文字に自動的に置換されます。
しかしここでは入力フィルタ機能を使わず、全角半角文字が混在した文字列項目を想定します。
このような状態で、例えば「JasmineSoft」(全角文字かつ大文字小文字が混在)で登録された項目に対して、検索文字列「jasminesoft」(半角文字かつすべて小文字)で検索できるようにします。
ここでは「会社名称」項目を例に説明します。会社名「JasmineSoft」と登録します。全角文字です。
半角文字で検索してもヒットします。
大文字小文字の違いがあってもヒットします。
すべて大文字でもヒットします。
途中の空白も無視して検索します。
companynameとcompanyname2の関係性は下図の通りです。
CSVダウンロード機能を有効にした場合は、「出力制御 > その他」より「CSVに出力する」のチェックをはずしてください。
また、この companyname2 項目で検索を行うため、データベースに保存します。
ASC 関数は全角文字を半角文字に変換します。例
定義方法
「companyname」は通常の入力及び一覧表示用です。
もう一方の「companyname2」は検索条件用として用意し、入力画面では隠し項目とします。
これによって、全角で入力された文字列はそのままデータベースに格納されます。
customerkana2は、入力画面で隠し項目とします。
「入力制御 > 隠し項目」で、「全画面」にチェックを入れます。
「出力制御 > 詳細画面 > 共通」で、「隠し項目にする」にチェックを入れます。
ワンポイント
これにより、CSVダウンロード出力時にこの項目が含まれなくなります。
ASC(
LOWER(
SUBSTITUTE(
SUBSTITUTE(${companyname}," ",""),
" ",""
)
)
)
LOWER 関数はアルファベットを小文字に変換します。
最初の SUBSTITUTE 関数は半角空白を空文字に置換します。もう一つの SUBSTITUTE 関数は全角空白を空文字に置換します。
データベースに格納された文字列も同じように正規化されているため、必ずヒットするようになります。
ASC(
LOWER(
SUBSTITUTE(
SUBSTITUTE(${companyname2}," ",""),
" ",""
)
)
)