AccessのVBAでSQLのINSTR関数を使い、文字列を検索し最初に見つかった文字位置を返す|フォーム実行例

文字列を検索し最初に見つかった文字位置を返すINSTR関数

SQL = " SELECT INSTR(フィールド名,検索文字列) FROM テーブル名 "
又は、
SQL = " SELECT INSTR(フィールド名,検索文字列) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)

フィールド名から検索文字列を検索し見つかった場合はその文字位置を、見つからない場合は0が返ります。

「バター品薄姿が消える店も」から「品」を検索した場合、4が返ります。
「バター品薄姿が消える店も」から「消える」を検索した場合、8が返ります。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「文字列を検索し最初に見つかった文字位置を返すINSTR関数」ボタンをクリックすると、
ニュースフィールドから「5」の文字を探します。

■実行画面
盗まれた55万円カメ無事生還 最後から4文字:5
若々しい タイ仕様のカローラ 最後から4文字:0
開花予測日は5月8日 最後から4文字:7
文字の検索

[ニュースデータベース テーブル]
データID   ニュース
10  盗まれた55万円カメ無事生還
11  若々しい タイ仕様のカローラ
13  開花予測日は5月8日
今日のニュース

[コード]
Option Compare Database

Private Sub コマンド8_Click()
    Dim SQL As String
    Dim rs As Recordset
    SQL = "SELECT ニュース,INSTR(ニュース,5) FROM ニュースデータベース"
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs(0) & "  文字位置:" & rs(1) & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

サンプルソフトのダウンロード

BackHome BackSQL Tips

Copyright(C) FeedSoft