【MS Access クエリ】複数テーブルをまとめる、IPアドレス(テキスト型)から各オクテットを抽出

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

この記事でできること

Microsoft AccessのSQL(クエリ)を使用して、以下の2つの処理を行う方法を解説します。

  • テキスト型で保存されたIPアドレスから、第1から第4までの各オクテットを数値として個別に抽出する。
  • 複数のテーブル(T1, T2, T3)のデータをUNION ALLを使って1つにまとめる。

想定環境・前提条件

  • Microsoft Access(2010以降、Microsoft 365 Access環境)
  • 対象のIPアドレスは「192.168.1.10」のような標準的なドット区切りのIPv4形式であり、テキスト型(Short Text)で保存されていること。

1. IPアドレス(テキスト型)から各オクテットを抽出するクエリ

テキスト型のIPアドレス文字列から、ドット(.)の位置を検索して各オクテットを切り出し、Val関数で数値に変換します。

SQLコード

SELECT テーブル1.IPアドレス, 
Val(Left([IPアドレス],(InStr(1,[IPアドレス],".")-1))) AS 第1オクテット, 
Val(Mid([IPアドレス],InStr(1,[IPアドレス],".")+1,InStr(InStr(1,[IPアドレス],".")+1,[IPアドレス],".")-InStr(1,[IPアドレス],".")-1)) AS 第2オクテット, 
Val(Mid([IPアドレス],InStr(InStr(1,[IPアドレス],".")+1,[IPアドレス],".")+1,InStr(InStr(InStr(1,[IPアドレス],".")+1,[IPアドレス],".")+1,[IPアドレス],".")-InStr(InStr(1,[IPアドレス],".")+1,[IPアドレス],".")-1)) AS 第3オクテット, 
Val(Right([IPアドレス],Len([IPアドレス])-InStr(InStr(InStr(1,[IPアドレス],".")+1,[IPアドレス],".")+1,[IPアドレス],"."))) AS 第4オクテット
FROM テーブル1;

解説と使い方

  • InStr関数でドットの位置を特定し、LeftMidRight関数で文字列を切り出しています。
  • IPアドレスの形式が不正(ドットが足りないなど)な場合、予期せぬエラーや意図しない値になるため、入力データのクレンジングと併せて使用してください。

2. 複数テーブルをまとめるクエリ(UNION ALL)

構造が同じ複数のテーブル(T1, T2, T3)のレコードを、重複行を含めてすべて垂直方向に結合します。

SQLコード

SELECT * FROM T1 
UNION ALL 
SELECT * FROM T2 
UNION ALL 
SELECT * FROM T3;

解説と使い方

  • UNION ALLは、重複排除を行うUNIONに比べてパフォーマンスが高くなります。重複データも含めて全件結合したい場合に最適です。
  • 結合するすべてのテーブルで、フィールドの数およびデータ型が一致している必要があります。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 変更HTMLタグやblockquoteで記述されていた古いレイアウトを、現在のCocoonテーマに適した構造化見出しとコードブロックへ修正しました。
  • 追加IPアドレスの各オクテット抽出クエリにおける前提条件や動作の解説、および期待される結果を追加しました。
  • 追加複数テーブルをUNION ALLでまとめるクエリの前提条件とテーブル構造の注意点を追加しました。

文書情報

記事タイトル
【MS Access クエリ】複数テーブルをまとめる、IPアドレス(テキスト型)から各オクテットを抽出
作成日
更新日
Source URL
https://papanda925.com/?p=464

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました