0

テキスト フィールドの空白文字に基づいて部分文字列を作成しようとしていますが、うまくいきません。

私のフィールドには 2 つ、場合によっては 3 つの単語がすべてスペースで区切られています。2番目、3番目の単語をスペースに合わせて引き出せるようにしたいです。ワードは可変長です。

私はこのようなことを試みましたが、成功しませんでした。

select mid([genus],InStr([genus]," ")+1) AS species from <tablename>;

助言がありますか?ありがとうございました。

4

2 に答える 2

2

最後の単語については、次のことができます。

SELECT Mid(genus,1 + InStrRev(genus," ")) AS species

2 つ以上ある場合は 2 番目の単語。

SELECT mid(genus,InStr(genus," ")+1, instr(InStr(genus," "),genus, " ")-1)  AS species
于 2013-01-10T16:26:08.023 に答える
1

この機能を使用できます

Public Function Item(ByVal s As String, ByVal index As Long, _
                     Optional ByVal delimiter As String = " ") As String
    Dim i As Long, pos1 As Long, pos2 As Long

    If index < 1 Or index > Len(s) Then
        Item = ""
        Exit Function
    End If
    s = s & delimiter
    pos2 = 1 - Len(delimiter)
    For i = 1 To index
        pos1 = pos2 + Len(delimiter)
        pos2 = InStr(pos1, s, delimiter, vbBinaryCompare)
        If pos2 = 0 Then
            Item = ""
            Exit Function
        End If
    Next i
    Item = Mid$(s, pos1, pos2 - pos1)
End Function

テスト

Item("asdas df 4354 sdf", 3)

収量

"4354"

選択したステートメントで

SELECT
    Item(genus, 1) AS word1,
    Item(genus, 2) AS word2,
    Item(genus, 3) AS word3
FROM
    <tablename>;
于 2013-01-10T16:42:29.923 に答える