none
データベースクエリで任意の値を検索する方法について RRS feed

  • 質問

  • データベースクエリで任意の値を検索する方法について

    データベースクエリについて質問させて頂きます。
    下記のようなクエリがあるとして、WHERE句で指定したフィールドを対象に検索処理を行いたいのですが、
    その際、フォームに配置されたテキストボックスに任意に入力した値を検索値にしたいのです。
    つまり、クエリ中の<変化する値>がそれに当たります。
    例えば<変化する値>が任意でなく指定値であれば'%あ%'とした時、あを含むレコードが検索されると思う
    ですが、前者はどのような記述をすれば良いのか分かりません。
    こういった場合、どのように記述すればよいのかご教授願います。

    SELECT Code, MainType, Name, Type1, Type2, Type3, Unit, UnitPrice, Used
    FROM shizai_master
    WHERE (Code LIKE '%<変化する値>%') OR
    (MainType LIKE '%<変化する値>%') OR
    (Name LIKE '%<変化する値>%') OR
    (Type1 LIKE '%<変化する値>%') OR
    (Type2 LIKE '%<変化する値>%') OR
    (Type3 LIKE '%<変化する値>%')
    2007年4月10日 4:57

回答

すべての返信

  • 単純に、ある値と一致するレコードを取得したいということでしょうか?

     

    であれば、

     

    WHERE Code = 'AAA'

     

    のように記述すればよろしいかと思いますが・・・

    2007年4月10日 7:27
  • パラメータを使用したクエリの作成 (パラメタライズドクエリ、 パラメータ クエリ) のことかな?

     

    ※ ちなみに、 LIKE のときは、 パラメータとして String.Format("%{0}%", MyTextBox.Text) などと、 "%" を含めて渡せばいいみたいです。
    2007年4月11日 3:51
  •  biac さんからの引用

    ※ ちなみに、 LIKE のときは、 パラメータとして String.Format("%{0}%", MyTextBox.Text) などと、 "%" を含めて渡せばいいみたいです。

    これでOKですが、MyTextBox.Textを直接渡すのではなく、これに含まれている特殊文字をエスケープしておくとよいでしょう。具体的には、%, [, _を、それぞれ[%], [[], [_]に置換します。

    2007年4月11日 5:08
    モデレータ