【问题标题】:How to use Left function with MS Access 2007如何在 MS Access 2007 中使用 Left 函数
【发布时间】:2014-05-20 01:09:47
【问题描述】:

好的,我正在尝试使用带有 MS Access 查询的基本 left() 函数,以便在两个表之间创建内部连接。将连接的两列包含给定街道地址的前 3 个字符。

我尝试使用如下所示的函数:

我只是想获取此列的前 3 个字符(显然是从左侧开始),并将其连接到我的分支管理表中的“地址左 3”列。但是,每次我尝试运行此查询时,都会出现语法错误。 left 函数在几乎所有语言/RDBMS 中都非常简单,我做错了什么?

编辑:这是错误的屏幕截图: 这个错误非常模糊。

【问题讨论】:

  • [Branch Mgmt][SalesPage Offices w/CRD] 查询吗?这两个查询都运行没有任何错误吗?
  • [Branch Mgmt] 是一个链接的 Excel 表。 [SalesPage Offices w/CRD] 是一个查询,它运行良好。这是一个日常使用的标准查询。
  • 你能分享一下语法错误吗?我刚刚在 Access 中使用 LEFT 测试了一个查询,它对我来说效果很好。
  • 当您从 VB 编辑器的主菜单中选择 Tools->References 时,是否有任何选中的引用标记为“MISSING”?
  • 我在我的 OP 中添加了错误的屏幕截图。

标签: ms-access ms-access-2007


【解决方案1】:

我认为您不能在 join 语句中使用 LEFT() 函数。而是运行子查询以获取所需的字段,然后将它们链接在一起。类似于以下内容:

SELECT M.TRADE_FIRM, M.POSTAL_CODE_1, M.ADDRESS_LINE_1, 
       M.OFFICE_ID, M.STATE_PROVINCE, M.CITY, B.*
FROM
(
  SELECT S.*, LEFT(S.ADDRESS_LINE_1, 3) AS Left3Addr
  FROM [SalesPage Offices w/CRD] AS S
) AS M
INNER JOIN [Branch Mgmt] AS B ON B.[Left 3 of address] = M.Left3Addr
AND B.State = M.State
AND B.City = M.City
WHERE M.TRADE_FIRM = 'WHATEVER'

【讨论】:

  • 感谢您的回复,但我更喜欢使用该功能。我担心在这种情况下子查询会大大减慢我的 Access DB,因为我一直在处理来自大型 SQL 数据库后端的非常大的数据集。
【解决方案2】:

你遗漏了一个右括号。改变这个...

ON ([Branch Mgmt].[Left 3 of address] = left([SalesPage Offices w/CRD].ADDRESS_LINE_1,3)

到这个...

ON ([Branch Mgmt].[Left 3 of address] = left([SalesPage Offices w/CRD].ADDRESS_LINE_1,3))

【讨论】:

  • 谢谢。这很好用。我错过了一个简单的难题。当然希望 Access 有类似 SQL Server 的智能感知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多