在MS Access中解析文本

时间:2008-10-01 10:35:51

标签: ms-access parsing

我的列包含字符串。该列中的字符串如下所示:

FirstString / SecondString / ThirdString

我需要解析这个,所以我有两个值:

值1:FirstString / SecondString 值2:ThirdString

我可以有更长的字符串,但我总是把它分开,如[string1 / string2 / string3 / ...] [stringN]

我需要得到的是:

Column1:[string1 / string2 / string3 / etc ....] 第2栏:[stringN]

无论如何我都无法找到这样做。有什么建议?我需要正则表达式吗?如果是这样,有没有办法在查询设计器中执行此操作?

更新:这两个表达式都会出现此错误:“您输入的表达式包含无效语法,或者您需要将文本数据括在引号中。”

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 个答案:

答案 0 :(得分:1)

在查询中,使用以下两个表达式作为列:

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)

答案 1 :(得分:0)

mid(col,1,instr(col,“/”, - 1)),mid(col,instr(col,“/”, - 1)+1,length(col))

答案 2 :(得分:0)

您是否有可能修复基础数据结构以进行正确规范化,以便您可以首先避免问题?除了检索数据外,整个主机还是准确维护数据的问题,如果你没有在一个字段中存储多个值,那么这一切都会得到改善。

答案 3 :(得分:0)

我知道你在查询中尝试这样做,所以SQL字符串函数可能是你最好的选择。

但是,值得一提的是,可以从VBA访问正则表达式COM对象。只需在宏代码中添加对Microsoft VBScript Regular Expressions库的引用。

然后你可以做这样的事情

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)