デバイス名が「デバイス」の前の単語であり、Access db エンジンによって直接サポートされている関数のみを使用してその単語を検索したい場合、Mid()
、InStr()
、そしてInstrRev()
仕事を成し遂げることができます...しかし、それはきれいではありません.
これがイミディエイト ウィンドウ セッションです ...
Note = "From the start until end at 01/05/2013, the XXXXXXX device was used."
? Mid(Note, _
InstrRev(Note, " ", InStr(1, Note, " device") -1) +1, _
InStr(1, Note, " device") - InstrRev(Note, " ", InStr(1, Note, " device") -1) -1)
XXXXXXX
Mid()
そのため、その複雑な式をクエリで使用する必要があります。
ただし、クエリでユーザー定義関数を使用できる場合は、ロジックの管理が容易になる可能性があります。
Public Function FindDevice(ByVal pInput As String) As Variant
Dim astrWords() As String
Dim i As Long
Dim lngUBound As Long
Dim varReturn As Variant
varReturn = Null
astrWords = Split(pInput, " ")
lngUBound = UBound(astrWords)
For i = 0 To lngUBound
If astrWords(i) = "device" Then
varReturn = astrWords(i - 1)
Exit For
End If
Next i
FindDevice = varReturn
End Function
次に、クエリは...
SELECT FindDevice(Note) AS device_name
FROM My_Log
WHERE Note LIKE "*, the*"