INSTR関数は文字位置を返しますが、INSTRB関数は文字位置のバイト数を返します。
下のサンプルソフトでも分かりますが、INSTR関数は半角・全角文字を関係なく検索していますが、
INSTRB関数は区別しています。
SQL = " SELECT INSTRB(フィールド名,検索文字列) FROM テーブル名 "
又は、
SQL = " SELECT INSTRB(フィールド名,検索文字列) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)
検索文字列が見つかった場合は、その文字位置のバイト数を返しますが見つからない場合は0が返ります。
サンプルソフト
[実行時の画面]
「文字列を検索し最初に見つかった文字位置のバイト数を返す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
サンプルソフトのダウンロード