たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_SQLによる指定テーブル内のあいまい検索【Like演算子】

SQLを使って指定したテーブル内の指定した任意の値に対し、あいまい検索を行う方法

特定のレコードを抽出する記述

書式:
全てのフィールドを検索対象とする場合
※なるべく必要なフィールドのみにしぼったほうが処理スピードが速い
SELECT * FROM テーブル名 WHERE 抽出条件;
特定のフィールドを検索対象とする場合
SELECT フィールドA, フィールドB, ..... FROM テーブル名 WHERE 抽出条件;

抽出条件の設定

上述の書式内の「抽出条件」にて、さらに特定のパターンを持つ特定のレコードの抽出ができる 書式:
特定のフィールドを検索対象とする場合
**SELECT フィールドA, フィールドB, ..... FROM テーブル名 WHERE フィールドA Like "検索したい文字列"

パターンの指定

任意の数の文字 「Like "青*"」(ANSI-92の場合「Like "青%"」)
任意の1文字 「Like "青?"」(ANSI-92の場合「Like "青_"」)
任意の1つの数字 「Like "#番"」
リストの中の1文字 「Like "o[AB]o"」
リストの中にあるもの以外の1文字 「Like "o[!AB]o"」(ANSI-92の場合「Like "o[^AB]o"」)
リストで設定した範囲のうちの1文字 「Like "a[b-e]d" 」
リストで設定した範囲のうちの1文字 「Like "a[!b-e]d" 」(ANSI-92の場合「Like "a[^b-e]d" 」)

【実践】指定した文字列であいまい検索する例

▼記述例▼

SubSearch_test()
 Dim SearchSQL  As String
 SearchSQL = "SELECT テーブルA.郵便番号,都道府県,市区町村"& _
 "FROM テーブルA LEFT JOIN テーブルB" & _
 "ON テーブルA.郵便番号=テーブルB.郵便番号" & _
 "WHERE テーブルA.郵便番号 Like '20[!0]-*';" 'ここで抽出条件を指定

 CurrentDb.QueryDefs("POSTCODEクエリ").SQL = SearchSQL 'クエリ名をセット
 DoCmd.OpenQuery"POSTCODEクエリ" '実行
End Sub