1

首先:我使用的是 Access 2010。

我需要做的是将字段中的所有内容都拉出,而不是某个字符串。例如说你有这个:

00123457* A8V *

最后三个加粗的字符只是一个例子;该部分可以是数字/字母的任意组合,长度为 2-4 个字符。00123457 部分将始终相同。因此,在上面的示例中,我的查询需要返回的是“A8V”。

我对如何做到这一点有一个模糊的想法,这涉及使用 Right 函数,以及(字段长度 - 该字符串中的最后一个位置)。所以我所拥有的是

SELECT Right(Facility.ID, (Len([ID) - InstrRev([ID], "00123457")))
FROM Facility;

从逻辑上讲,它会起作用,但是 Access 2010 抱怨我错误地使用了 Right 函数。这里有人可以帮我解决这个问题吗?

非常感谢!

4

3 回答 3

2

为什么不使用替换功能?

REPLACE(Facility.ID, "00123457", "")
于 2013-07-19T20:28:56.833 回答
1

您在这里缺少一个右方括号Len([ID)

你还需要把这个“00123457”倒过来InStrRev(),但是你不需要InStrRev(),只要InStr()

于 2013-07-19T21:03:23.087 回答
0

如果我理解正确,您需要字符串的最后三个字符。

简单的语法:Right([string],3) 将产生您想要的结果。

( http://msdn.microsoft.com/en-us/library/ms177532.aspx )

例如:

(TABLE1)
| ID  | STRING        |
------------------------
|  1  | 001234567A8V  |
|  2  | 008765432A8V  |
|  3  | 005671234A8V  |

因此,您将运行此查询:

SELECT Right([Table1.STRING],3) AS Result from Table1;

查询返回:

(QUERY)
|   RESULT    |
---------------
| A8V         |
| A8V         |
| A8V         |

编辑:

在看到结束字符串需要 2-4 个字符而字符串的原始左侧部分是 00123457(8 个字符)之后,试试这个:

SELECT Right([Table1].[string],(Len([Table1].[string])-'8')) AS Result
FROM table1;
于 2013-07-20T17:19:47.460 回答