AccessクエリとSQLの関係 抽出条件(INとLIKE)
さて、Accessクエリの続きである。
今回は、前回に続いて、またもや抽出条件である。
ORやANDを抽出条件に書いてみたわけであるが、IN(イン)を紹介していなかったので、ここで解説するのである。
IN 入っているか?
さて、抽出条件とその下の「または」の入力欄には、抽出条件の式を書くことができた。デフォルトで9個の条件を記入することができる。
抽出条件の欄に、Orで連結することでも同じ効果となる条件式になるので、「1 Or 2 Or 3 Or 4」とか書いていけば、長さの制限に引っかかるまでいくらでも条件を追加することができる。
INを使うとこのような条件式を簡潔に記述できる。
IN (1,2,3,4)
とすればOKなのだ。
SQLビューにしても、そのままIN (1,2,3,4)となるだけなので、SQL命令の画面キャプチャは省略。一応、全体を載せておく。
SELECT foo.a, foo.b FROM foo WHERE (((foo.b) In (1,2,3,4)));
ここまでのまとめ
IN
複数の値のうち、どれかと一致すればOKなとき、IN演算子を使うと便利。
INの括弧の中には、サブクエリーを書くことができるのだがこれは、少々高度な話になってくるので、また後日ということにする。
LIKE あいまい検索 パターンマッチング
ついでながら、部分一致で検索したい場合の抽出条件の書き方についても、解説しておく。
パターンマッチングで、あいまい検索をしたい場合は、「LIKE」を使えばよい。
LIKE '*A*'
とすればa列の値の中にAが含まれているレコードが抽出される。
*の部分は、なんでもOKな、いわゆるワイルドカードである。
SQL標準では、%が相当するメタ文字になるが、Accessでは、*を使った方がよい。
というか、%が使える状況が限定的。
メタ文字の?を使用することで、1文字のワイルドカードになる。
さらには、[A-F] のようにすれば、Aから順にFまでの 「A B C D E F」のいずれか1文字といったワイルドカードにできる。
SELECT foo.a, foo.b FROM foo WHERE (((foo.a) Like '*A*')));
SQLでのLIKEは、正規表現とは異なったパターン指定となる。Accessにおいては正規表現的な要素があるが、微妙に異なる。また、SQLiteのREGEXPのような正規表現でのパターン検索用の演算子は存在しない。
正規表現自体は、「Microsoft VBScript Regular Expression 5.5」を参照設定すれば、RegExpオブジェクトが利用可能になる。RegExpオブジェクトを使って正規表現を処理するような、自前のVBA関数を作ってやれば、クエリから正規表現によるマッチング検索をできなくもない。
ここまでのまとめ
LIKE
パターンマッチングによるあいまい検索。
今回はここまで。

Access クエリ 徹底活用ガイド ~仕事の現場で即使える
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2018/05/25
- メディア: 大型本
データベースにおける正規表現【REGEXP】
AccessクエリとSQLの関係 デザインビューとSQLビュー
AccessクエリとSQLの関係 フィールド
AccessクエリとSQLの関係 フィールドに式を書く
AccessクエリとSQLの関係 並び替え
AccessクエリとSQLの関係 抽出条件
AccessクエリとSQLの関係 抽出条件(または)
AccessクエリとSQLの関係 抽出条件(INとLIKE)
AccessクエリとSQLの関係 抽出条件(表示のチェックボックス)
投稿者プロフィール

最新の投稿
コンピューター関係の記事2025年4月26日アイキャッチ画像にSQLアイコンとJSONアイコンが欲しい
コンピューター関係の記事2025年4月23日AdSense審査に無事パス
コンピューター関係の記事2025年4月22日SSブログ復活
コンピューター関係の記事2025年4月22日SSブログが無くなった余波は大きい