6 返信 最新の回答 日時: Sep 2, 2015 1:41 AM ユーザー:user14230

    ExcuteSQL 大文字/小文字,全角/半角の区別について

    user14230

      Filemaker Pro 13 Adv.を使用しています。

      SQLについては初心者です。

       

      ExcuteSQLを使って検索したいのですが、

      大文字/小文字,全角/半角 が区別されてしまうため、

      期待する結果がでません。

       

      例えば、WHERE句のLIKEで ”LIKE 'A%'”の検索は、大文字の"A"を含む

      フィールドのみを返します。小文字"a"を含むフィールドは結果に含まれません。

       

      大文字/小文字,全角/半角の区別をしないようにするためには

      どうしたらよいのでしょうか。

       

      ご教示いただきたく、

      どうぞよろしくお願いいたします。

        • 1. Re: ExcuteSQL 大文字/小文字,全角/半角の区別について
          user19752

          大文字/小文字は

          UPPER(field) LIKE 'A%'

          ですが、%使うなら結局同じことですが、全レコードを計算するので非常に遅くなるでしょう。

          全角/半角の変換関数はないのでFM側で統一(あるいは別途計算フィールドを作る)しておかないと無理そうです。

          • 2. Re: ExcuteSQL 大文字/小文字,全角/半角の区別について
            user14230

            ご回答ありがとうございます。

             

            UPPERや%を使うと非常に遅くなるのですね。

            複数のテーブルとフィールド全て対象にして検索したいのですが、

            レコード数も計1万件を超えてしまうため、

            ますます時間がかかってしまいそうですね。

             

            ExcuteSQLを使ってみたかったのですが、

            あきらめて別の手段を検討してみます。

             

            ありがとうございました。

            • 3. Re: ExcuteSQL 大文字/小文字,全角/半角の区別について
              user19752

              1万ぐらいなら実用範囲内かもしれませんが、全角・半角はできないので...

              検索文字が1文字なら、FM側で変換してOR検索?

              • 4. Re: ExcuteSQL 大文字/小文字,全角/半角の区別について
                user14047

                検索対象のフィールドが英字のみならまだ回避できるのですが、日本語を含むテキストだと、FileMaker の検索結果と ExecuteSQL 関数での結果が変わってくる可能性があります。ですから、素直に FileMaker の検索を使われるのがいいかと思いますよ。

                 

                # FileMaker Server のスケジュールで動かすスクリプトの中で検索スクリプトステップを利用すると、検索対象が 0 レコードの場合、必ず Server の Event ログにエラーが残ってしまい、本来のエラーが埋もれてしまいます。
                # これを避けるために、スクリプトの中で ExecuteSQL 関数を使ってまず存在確認をしてから、FileMaker のスクリプトで検索をするという手法をとったりもします。
                # でも、スケジュールになるようなスクリプトですから、1 か 0 のフラグであるとか、ASCII 文字列である ID であるとか、日付とか、ExecuteSQL 関数でも FileMaker の検索でも結果が変わらないようなものばかりです。

                • 5. Re: ExcuteSQL 大文字/小文字,全角/半角の区別について
                  user14230

                  ご返信ありがとうございます。

                   

                  弊社は研究所で研究に関するデータをFilemakerで管理しています。

                  そのデータベースには研究データの他に、特許関係、文献、学会発表、製品情報、経理関係などなど

                  幅広くデータを管理しており、データの種類毎にテーブルを分けています。

                  現在は、それぞれのテーブル内で検索できるような仕組みにしているのですが、

                  全てのテーブル、もしくはテーブルを複数選択して検索したいとの要望があるため、

                  実現できないか検討しているところです。

                   

                  ExcuteSQLを使うには壁がありそうなので、

                  全テーブル、全データを吐き出して作った横断検索用のテーブルを作って、

                  検索しようかと考えています。

                   

                  これはこれで問題があるかもしれませんが...

                   

                  またご相談させていただくかもしれません。

                  今後ともよろしくお願いいたします。

                  • 6. Re: ExcuteSQL 大文字/小文字,全角/半角の区別について
                    user14230

                    ご返信ありがとうございます。

                     

                    FileMakerの検索を使う方向で検討することにします。

                     

                    貴重なアドバイスありがとうございます。

                    大変参考になります。

                     

                    今後ともよろしくお願いいたします。