You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mid与InStr提取Access查询中指定连字符间的字符串

Access查询提取连字符分隔字符串指定位置内容的正确表达式

针对你的需求——提取Column_A中第四和第五个连字符之间的内容,以下是正确的查询表达式:

Column_B: Mid([Column_A], InStr(InStr(InStr(InStr([Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-")+1, InStr(InStr(InStr(InStr(InStr([Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-") - InStr(InStr(InStr(InStr([Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-")+1,[Column_A],"-") - 1)

表达式逻辑拆解

  • 定位第四个连字符的位置:通过四层嵌套InStr,依次找到第1到第4个-的位置,最终以第四个-的下一位作为提取起始点。
  • 定位第五个连字符的位置:在第四个-的基础上再嵌套一次InStr,找到第五个-的位置。
  • 提取目标内容:用Mid函数,从第四个-的下一位开始,提取长度为「第五个-位置 - 第四个-位置 - 1」的字符,即为第四和第五个-之间的内容。

测试验证

用你提供的示例数据测试,结果如下:

  • 第一行10-123-20000000-JaneBank-JaneBank1001-Regions → 提取结果:JaneBank1001
  • 第二行100-1234-40000-NeilBank-NeilBank1201-Regions → 提取结果:NeilBank1201
  • 第三行10-12125-2232456-ABCAcct-ABCAcct2122-Regions → 提取结果:ABCAcct2122

你之前表达式的问题

你之前的表达式仅嵌套了1-2层InStr,只能定位到第二个-的位置,因此提取的是第二和第三个-之间的内容,未完成第四、第五个分隔符的定位。

内容的提问来源于stack exchange,提问作者Datamint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:37:10