SQL 「Between And 」を使い文字の範囲のレコードを抽出する

文字の範囲を抽出 : Between And

SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between '文字1' And '文字2'
文字1 から 文字2 の範囲のレコードを返します。

抽出する文字が1文字でない場合は
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between '文字1' And '文字2' AND フィールド名 <> '文字2' "
このように先頭文字が、文字1 から 文字2未満 の範囲になるようにします。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE フリガナ BETWEEN 'ア' AND 'サ' AND フリガナ <> 'サ' "
この場合、フリガナが「ア」~「コ」の学生IDを抽出します。

これを「AND」にすると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE フリガナ >= 'ア' AND フリガナ < 'サ' "
となります。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「型番 開始」に抽出したい型番の開始文字を入力します。
「型番 終了」に抽出したい型番の終了文字を入力します。

「Between And 文字抽出」ボタンをクリックすると、販売データテーブルから型番が、
「型番 開始」文字から「型番 終了」文字の範囲内のレコードを表示します。

SQL = "SELECT 商品ID,販売数,販売日,型番 FROM 販売データ WHERE 型番 Between '" & Me!テキスト2 & "' AND '" & Me!テキスト3 & "'"

SQL = "SELECT 商品ID,販売数,販売日,型番 FROM 販売データ WHERE 型番 >= '" & Me!テキスト2 & "' AND 型番 <= ''" & Me!テキスト3 & "'"
と同じ結果になります。
サンプルソフトをダウンロードしお試しください。

■先頭文字1文字で抽出した画面
型番で抽出

■文字列で抽出した画面
文字抽出

[販売データ テーブル]
商品ID 型番   販売日  販売数
10    abc-1 2007/09/01 5000
11    bbc-1 2007/09/02 2500
13    jbc-1 2007/09/12 6200
16    nbc-1 2007/09/25 3350
型番フィールド

[コード]
Option Compare Database

Private Sub コマンド8_Click()
    Dim SQL As String
    Dim rs As Recordset
    If IsNull(Me!テキスト2) Then
        MsgBox "抽出する販売日の開始日を入力してください。"
        Me!テキスト2.SetFocus
        Exit Sub
    End If
    If IsNull(Me!テキスト3) Then
        MsgBox "抽出する販売日の終了日を入力してください。"
        Me!テキスト3.SetFocus
        Exit Sub
    End If
    Me!テキスト1 = Null
    SQL = "SELECT 商品ID,販売数,販売日,型番 FROM 販売データ WHERE 型番 Between '" & Me!テキスト2 & "' AND '" & Me!テキスト3 & "'"
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs![型番] & ": " & rs![販売日] & ": " & rs![商品ID] & " : " & rs![販売数] & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

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

BackHome BackSQL Tips

Copyright(C) FeedSoft