初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-08-25 20:52:56

pasqueis
Member

特定の文字検索(エクセルだとcountifの複数ver)

filemaker初心者です。
よろしくお願いします。

os : win7
Ver : filemaker pro adv


【質問】
特定の文字が 指定した文字列の中に含まれるかを検索したいです。
-----------
↑↑↑↑↑
この「特定の文字」が複数あります。


テーブルA         テーブルB 
(会社名)        (検索ワード)
株式会社〇〇〇〇      会社
有限会社〇〇〇〇      法人
社会福祉法人〇〇〇〇
〇〇〇〇企業組合
〇〇〇〇連合会
〇〇〇〇自治会


※「テーブルA」のフィールド(会社名)の文字列の中で、「テーブルB」の(検索ワード)が ”1つでも存在する” データを抽出したいです。



↓↓↓↓↓抽出結果↓↓↓↓↓

テーブルA 
(会社名)
株式会社〇〇〇〇
有限会社〇〇〇〇
社会福祉法人〇〇〇〇



何卒よろしくお願いします。

Offline

#2 2017-08-25 22:24:09

Shin
Member

Re: 特定の文字検索(エクセルだとcountifの複数ver)

検索モードにして、検索ワード1の前後に * を付けて会社名に設定、新規検索条件、検索ワード2の前後に * を付けて会社名を設定、検索実行

Offline

#3 2017-08-25 22:48:57

Hiro
Member

Re: 特定の文字検索(エクセルだとcountifの複数ver)

「検索ワード一覧」を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

#4 2017-08-27 01:06:23

pasqueis
Member

Re: 特定の文字検索(エクセルだとcountifの複数ver)

Shinさん Hiroさん

ありがとうございます。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 509.7 KiB (Peak: 514.24 KiB) ]