【问题标题】:String Extraction between two characters两个字符之间的字符串提取
【发布时间】:2016-08-02 03:19:05
【问题描述】:

我在 Microsoft Access 2010 中工作,我有一个表和列 [tblData]![Associate Name],其中的数据格式类似于 Smith, John (123456)。显然,这显示了姓氏、名字和员工 ID 号(可以在 5 到 6 位之间变化)。我的问题是我需要从此字符串中提取员工 ID 号,而我正在努力使用 LeftRightMidInStr 函数的正确组合。

【问题讨论】:

  • 你为什么要这样存储数据?这本质上是一个计算列,这是一个糟糕的设计。
  • 很遗憾,这不是我的数据。我只是被要求操纵它大声笑

标签: sql ms-access ms-access-2010


【解决方案1】:

使用InStr() 查找( 字符的位置。

接下来使用Mid()提取(后一个字符开始的子字符串

然后Val() 会从剩余的数字中给你一个数字;它会忽略最后一位数字之后的任何内容。

如果您希望结果为字符串而不是数字,可以使用CStr() 进行转换。

以下是即时窗口中的示例:

Associate_Name = "Smith, John (123456)"
? InStr(1, Associate_Name, "(")
 13 
? Mid(Associate_Name, InStr(1, Associate_Name, "("))
(123456)
? Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1)
123456)
? Val(Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1))
 123456 
? CStr(Val(Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1)))
123456

【讨论】:

  • 另请查看OnlyDigits() 是否对您的情况有用。
  • 哦,好吧,在做这种事情时,通过过程是什么非常有意义。感谢您的宝贵时间!
  • 是的,我认为代码示例会比我的话更好地解释它。 :-) 不客气。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 2020-10-15
  • 2014-02-26
  • 1970-01-01
  • 2013-01-31
  • 2013-12-11
  • 2015-05-04
相关资源
最近更新 更多