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

文字列を検索し最初に見つかった文字位置のバイト数を返すINSTRB関数

INSTR関数は文字位置を返しますが、INSTRB関数は文字位置のバイト数を返します。
下のサンプルソフトでも分かりますが、INSTR関数は半角・全角文字を関係なく検索していますが、
INSTRB関数は区別しています。

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

検索文字列が見つかった場合は、その文字位置のバイト数を返しますが見つからない場合は0が返ります。



BackHome BackSQL Tips

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

■実行画面
最初の数値がINSTR関数で、次の関数がINSTRB関数です。
半角カナの「ミラン」ではINSTRB関数で0になっています。

ガソリン攻防 山口に大物続々 文字位置:4 : 7
ロナウジーニョとミラン合意 文字位置:11 : 0
物価高 東海のモーニング危機 文字位置:11 : 21


[ニュースデータベース テーブル]
データID   ニュース
10 ガソリン攻防 山口に大物続々
11 ロナウジーニョとミラン合意
13 物価高 東海のモーニング危機


[コード]
Option Compare Database

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

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

BackHome BackSQL Tips

Copyright(C) FeedSoft