みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
filemaker初心者です。
よろしくお願いします。
os : win7
Ver : filemaker pro adv
【質問】
特定の文字が 指定した文字列の中に含まれるかを検索したいです。
-----------
↑↑↑↑↑
この「特定の文字」が複数あります。
テーブルA テーブルB
(会社名) (検索ワード)
株式会社〇〇〇〇 会社
有限会社〇〇〇〇 法人
社会福祉法人〇〇〇〇
〇〇〇〇企業組合
〇〇〇〇連合会
〇〇〇〇自治会
※「テーブルA」のフィールド(会社名)の文字列の中で、「テーブルB」の(検索ワード)が ”1つでも存在する” データを抽出したいです。
↓↓↓↓↓抽出結果↓↓↓↓↓
テーブルA
(会社名)
株式会社〇〇〇〇
有限会社〇〇〇〇
社会福祉法人〇〇〇〇
何卒よろしくお願いします。
Offline
検索モードにして、検索ワード1の前後に * を付けて会社名に設定、新規検索条件、検索ワード2の前後に * を付けて会社名を設定、検索実行
Offline
「検索ワード一覧」をExecuteSQL関数で変数へ格納、
・その一覧から検索ワードを1語づつ取り出して、
・部分一致検索キーに修正加工、
・これを新規検索条件に設定、
・このステップを一覧の最後のワードまで繰り返す。
最後に検索を実行して終了する。
【部分一致OR検索スクリプト】
・変数を設定 [$検索ワード一覧; 値:ExecuteSQL("SELECT \"検索ワード\" FROM \"テーブルB\""; ""; ¶)]
・変数を設定 [$i; 値:0]
・検索モードに切り替え []
・Loop
・ Exit Loop If [$i=ValueCount($検索ワード一覧)]
・ If [Let([$i=$i+1; $key=GetValue($検索ワード一覧; $i)]; True)]
・ 新規レコード/検索条件
・ フィールド設定 [テーブルA::会社名; "*" & $key & "*"]
・ End If
・End Loop
・検索実行 []
【★補足★】
本来FM検索のデフォルト仕様は「前方一致」なのですが、
Unicode文字がサポートされて以来その影響で、
日本語は「部分一致」がデフォルトとなっています。
その為、検索ワードが日本語だけに限定できるなら、
部分一致検索キーに修正するのは敢えて不要でしたネ。
「"*" & $key & "*"」⇔「 $key 」
本事例のように日本語だけなら、どちらでも「部分一致」検索となります。
因みに、逆に日本語の「前方一致」検索は、明示的に「"=" & $key & "*"」
としなければできませんので、要注意です。
Last edited by Hiro (2017-08-26 01:08:54)
Offline
Shinさん Hiroさん
ありがとうございます。
Offline
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 511.64 KiB (Peak: 518.61 KiB) ]