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