如何在数据库字段中选择不属于此字符串的所有内容?

时间:2013-07-19 20:22:23

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

首先:我正在使用Access 2010.

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

00123457 * A8V *

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

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

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

从逻辑上讲,它可以工作,但是Access 2010抱怨我正确使用了Right功能。有人可以帮我解决这个问题吗?

非常感谢!

3 个答案:

答案 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;