• ベストアンサー

Access 特殊文字

Accessのあるテーブルのフィールドに、「*」という文字列がはいったものがあります。 たとえば、「*001」とか「*452」とかです。 これをLikeで検索するにはどんなSQLを書いたらいいのでしょう?? 教えて下さい!

質問者が選んだベストアンサー

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

「*」(や「?」「#」)を含む文字列の比較を行うときは、これらの文字を角かっこ「[ ]」で囲みます。 例えば、 「*001」を検索するなら、Like [*]001 先頭が「*」の文字列全てなら、Like [*]* Access の HELP で「Like 演算子」を確認してみてください。

rui_cho
質問者

お礼

ありがとうございます。 http://support.microsoft.com/default.aspx?scid=/directory/worldwide/ja/kblight/T002/2/01.asp で先に見つけてしまいました。

関連するQ&A

  • ADOでのSQLついて

    こんにちは! ASPでADOを利用してSQLを使っていまして、 任意の文字列検索をやりたいのですが、うまくヒットしません。 AccessでのSQLで、likeを使った ((フィールド名) Like "*文字列*")を使いたいのですが、 ASPではアスタリスク*がうまく認識されていないような気がします。 うまくやる方法は無いのでしょうか?

  • [Access]クエリの抽出条件について

    アクセス初心者です。よろしくお願いします。 クエリの抽出条件に別テーブルのフィールドをあいまい検索で入れたいのですが方法がわかりません。 データシートビューには検索したいテーブル(tbl_1)と 検索する文字列が入ったテーブル(tbl_2)の2つを表示させています。 デザイングリッドは検索したいフィールドを表示し、 抽出条件にLike "*[tbl_2]![フィールド名]*"と入れましたが該当するものがあっても表示されないのです。 どうしたらよいでしょうか。ご伝授ください。

  • MSアクセス2013のSQLでESCAPE文字指定

    MSアクセス2013のSQLでLIKE検索時のエスケープ文字を別の文字に変更する ESCAPEキーワードを記述したら『演算子がありません』とエラーになったのですが 使えないんですか? select * from テーブル where 項目 like 'abc' ESCAPE '#' ;

  • Access:クエリーにて集計後に文字列結合したい。

    Accessのクエリーでレコードのグループ化を行っている状態で、あるフィールドに対してだけ文字列の結合を行いたいのですが、集計部分をどのように指定すればよいかわからず困っています。 イメージとしては、SQLビューにて、グループ化されたレコードの合計が、  SUM([テーブル名].[フィールド名]) で求められる様に、 エクセルの文字列結合関数  CONCATENATE([テーブル名].[フィールド名]) が使いたい、という感じです、、 Accessにおける文字列結合は"&"を使うとありましたが、この場合どのように記述するべきでしょうか?

  • AccessのデータをVBを使って置換する

    (1)VisualBasic6.0を用いて、Access2000のデータベースに接続します。 (2)データベースの中のテーブル(テーブル名:T-カレンダー)にあるフィールド(フィールド名:コード)に保存されているデータの一部分を置換したい。(⇒途中のアルファベットを変更したい。)(例;置換前:123FFF789 置換後:123III789)  テーブルを直接開いて、フィールドにカーソルをあわせて、”編集メニュー”の『検索と置換』から行っても出来るのですが、Accessを触らないでVBから作ったフォームから変更(置換)をさせたい。  ◇フォームに2つテキストボックスを作って、「検索する文字列」と「置換後の文字列」を入力し、『変換』ボタンを押したら、データが置換される、という流れ。   一回きりの置換でなくて、何回でも同じフィールド内のデータを置換したい。   SQLのREPLACE関数を用いて出来るかな、とは思っているのですが、どのように作成すればよろしいのでしょうか。  また他のやり方でシンプルな方法があればお教えください。

  • 文字列に対してPHP上で一括置き換えしたい

    DBにあるテーブルの指定されたカラム全てを文字列に対してPHP上で一括置き換えしたいです。 phpアドミン上でSQL文を使って UPDATE `テーブル名` SET フィールド名A=REPLACE (フィールド名A,"置換前の文字列","置換後の文字列"); で実行したらうまくいくのですが、 これをPHP上で処理したいと考えてます。 require("godb.php");//DBにアクセス $sql ="UPDATE テーブル名 SET フィールド名 = REPLACE(フィールド名,"AAA","BBB")"; mysql_query($sql2); と実行してもうまくいきません。。。 これって、、、一個一個対象カラムをPHP上で取り出してから 処理をかけないといけないのでしょうか。。 アドバイスいただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 複数テーブルにわたるCOUNT

    複数のテーブルで検索条件が当てはまった行を検索し、 その総行数を得たいのですが、 以下のSQL文ではあさっての数値が出てしまいます。 構文が間違っているのでしょうか。 (MySQLを使っています) SELECT Count(*) FROM テーブル1,テーブル2,テーブル3  WHERE (テーブル1.列1 Like 検索文字      or テーブル2.列2 Like 検索文字      or テーブル3.列2 Like 検索文字; どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • MySQL
  • アクセスのクエリ 1文字以上を抽出

    アクセスのクエリの抽出条件で、「1文字以上」とする方法を教えてください。 抽出条件をビルドで作ってみたのですが、 勝手にダブルコーテーションがついてしまいます。 1文字以上の値はあるのに何も抽出されません。 sql文は SELECT [テーブル1].[フィールド1] FROM テーブル1 WHERE ((Len([テーブル1]![フィールド1])>"1")); となっています。 ご教授よろしくお願いします。

  • 制御文字を含む文字列を扱うには

    field char(50) binary not null unique primary key,fulltext (field) この設定で作られたフィールドがあり、主にlike検索をされます。 このフィールドには本来10進数の数字の文字列を入力する事を考えていたのですが、(数値としては桁数が大きすぎる事と、その数字列の中に"123"を持つ物を探すなど数量とは関係無い検索がされる事から文字列にしています) MySQLのリファレンスによると、インデックスの対象になる文字列は桁数が短い方がいいようなので、どうせ数値でなく文字列を使っているのならと思い、1バイトで表現出来る全ての文字を使い256進数で表し、桁数を節約しようと考えました。 256進数に直してしまうと10進数の状態で"ある数字列"を持つのかどうか分からなくなるのではないかと思うかもしれませんが、それはこのフィールドに行われるlike検索の特徴により解消されます。 長い前置きでしたが、質問はタイトル通り制御文字を含む文字列を扱う事、言い換えれば0~255の全ての文字コードを文字列データとしてMySQLでインサート・全文インデックス・セレクトする方法です。このフィールドのデータは出力される事は無く、selectのwhere部分に使われ、出力されるのは同レコード内の別のフィールドのデータです。 素直に以下のコードでテストしましたが失敗しました。 while ($i < 50){ $rand = mt_rand(0,255); $str .= chr($rand); $i++; }/*insertする文字列$strを生成*/ $sql = "insert into table(field) values ('$str')" $strの中に制御文字や"や'等の文字が入るとinsertが失敗し、追加出来たレコードについても、コマンドプロンプトからselectして出力してみるとPCが警告音を連発します。 何か方法は無いでしょうか?

    • ベストアンサー
    • MySQL
  • 【アクセス】ハイパーリンク アドレスと表示文字列のどちらも置換したい

    テーブル1のフィールド「アドレス」をハイパーリンク型にし、 レコードに 表示文字列:C:\Users アドレス:C:\Users と入れています。 ここで 置換と検索ダイアログを呼び出して 検索する文字列:C:\ 置換後の文字列:D:\ にしてすべて置換をおしても 表示文字列しか置換されません。 表示文字列もアドレスも同じように置換するにはどうすればいいのでしょうか? よろしくお願い致します。(当方アクセス2003です)