1

文字列を含む列があります。その列の文字列は次のようになります。

最初の文字列/2 番目の文字列/3 番目の文字列

これを解析する必要があるため、2 つの値があります。

値 1: FirstString/SecondString 値 2: ThirdString

実際にはもっと長い文字列を使用できますが、常に [string1/string2/string3/...][stringN] のように区切る必要があります。

私が終わらせる必要があるのはこれです:

列 1: [文字列 1/文字列 2/文字列 3/etc....] 列 2: [文字列 N]

とにかくこれを行うためのアクセスが見つかりません。助言がありますか?正規表現は必要ですか? もしそうなら、クエリ デザイナーでこれを行う方法はありますか?

更新:どちらの式でも、「入力した式に無効な構文が含まれているか、テキスト データを引用符で囲む必要があります」というエラーが表示されます。

expr1: Left( [Property] , InStrRev( [Property] , "/") - 1), Mid( [Property] , InStrRev( [Property] , "/") + 1)

expr1: mid( [Property] , 1, instr( [Property] , "/", -1)) , mid( [Property] , instr( [Property] , "/", -1)+1, length( [Property] ))
4

4 に答える 4

1

クエリでは、次の 2 つの式を列として使用します。

Left(col, InStrRev(col, "/") - 1), Mid(col, InStrRev(col, "/") + 1) 

col はあなたの列です。

VBA の場合は、次を使用します。

last_index= InStrRev(your_string, "/")

first_part= Left$(your_string, last_index - 1)
last_part= Mid$(your_string, last_index + 1)
于 2008-10-01T11:07:44.560 に答える
0

クエリ内でこれを実行しようとしていることはわかっているので、SQL 文字列関数がおそらく最善の策です。

ただし、VBA からアクセスできる正規表現 COM オブジェクトがあることに注意してください。マクロ コード内に Microsoft VBScript 正規表現ライブラリへの参照を追加するだけです。

次に、このようなことができます

Dim szLine As String
Dim regex As New RegExp
Dim colregmatch As MatchCollection

With regex
    .MultiLine = False
    .Global = True
    .IgnoreCase = False
End With

szLine = "FirstString/SecondString/ThirdString"

regex.Pattern = "^(.*?\/.*?)/(.*?)$"
Set colregmatch = regex.Execute(szLine)

'FirstString/SecondString
Debug.Print colregmatch.Item(0).submatches.Item(0)
'ThirdString
Debug.Print colregmatch.Item(0).submatches.Item(1)
于 2009-01-29T21:34:12.233 に答える
0

mid(col, 1, instr(col, "/", -1)) , mid(col, instr(col, "/", -1)+1, length(col))

于 2008-10-01T10:40:02.957 に答える
0

そもそも問題を回避できるように、基になるデータ構造を適切に正規化するように修正できる可能性はありますか? データの取得に加えて、ホスト全体またはデータを正確に維持する際の問題が発生します。単一のフィールドに複数の値を格納していなければ、これらはすべて改善されます。

于 2008-10-03T19:40:57.303 に答える