1

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

第一串/第二串/第三串

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

值 1:FirstString/SecondString 值 2:ThirdString

我实际上可以有更长的字符串,但我总是需要它像 [string1/string2/string3/...][stringN] 那样分开

我需要结束的是:

第 1 列:[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

4 回答 4

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)
于 2008-10-01T11:07:44.560 回答
0

中间(col,1,instr(col,“/”,-1)),中间(col,instr(col,“/”,-1)+1,长度(col))

于 2008-10-01T10:40:02.957 回答
0

您是否有机会修复底层数据结构以正确规范化,以便一开始就避免该问题?除了检索数据之外,还会出现整个主机或准确维护数据的问题,如果您不在单个字段中存储多个值,这一切都会得到改善。

于 2008-10-03T19:40:57.303 回答
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 回答