首先:我正在使用Access 2010.
我需要做的是将字段中的所有内容拉出来,而不是某个字符串。比方说,你有这个:
00123457 * A8V *
粗体的最后3个字符只是一个例子;该部分可以是数字/字母的任意组合,长度为2-4个字符。 00123457部分将始终相同。所以我需要在上面的例子中通过我的查询返回的是“A8V”。
我对如何执行此操作有一个模糊的想法,其中涉及使用Right函数,(字段长度 - 该字符串中的最后一个位置)。所以我拥有的是
SELECT Right(Facility.ID, (Len([ID) - InstrRev([ID], "00123457")))
FROM Facility;
从逻辑上讲,它可以工作,但是Access 2010抱怨我正确使用了Right功能。有人可以帮我解决这个问题吗?
非常感谢!
答案 0 :(得分:2)
为什么不使用替换功能?
REPLACE(Facility.ID, "00123457", "")
答案 1 :(得分:1)
您在Len([ID)
您还需要在InStrRev()
中撤消此“00123457”,但不需要InStrRev()
,只需InStr()
。
答案 2 :(得分: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;