MS Access执行SQL报查询子句不完整语法错误 引号如何正确使用?
问题原因
- MS Access 语法规定,包含空格、特殊字符的**标识符(表名、字段名等)**必须使用方括号
[]包裹,你错误使用单引号'包裹带空格的表名和字段名。单引号在SQL中仅用于包裹字符串字面量,用在标识符上会导致解析异常。 - 当解析器读到
'MAIN DATABASE'.CoupaREQ时,会将'MAIN DATABASE'识别为字符串常量,后续的.CoupaREQ不属于合法语法结构,直接打断SELECT子句的解析,最终触发"Incomplete query clause"报错。
修正后的SQL语句
SELECT [MAIN DATABASE].CoupaREQ, [MAIN DATABASE].OldServiceTag, [REQ Lookup].[Old Tag Serial], [REQ Lookup].[Coupa Req], [REQ Lookup].[Req From Tracker] FROM [MAIN DATABASE] INNER JOIN [REQ Lookup] ON [MAIN DATABASE].ID = [REQ Lookup].ID;
注意事项
- 后续编写Access SQL时,只要标识符包含空格、中文、特殊字符,或是和SQL保留字重名,统一用方括号
[]包裹即可避免同类语法错误。 - 上述修正方案将你原有的隐式连接写法替换为显式INNER JOIN写法,关联条件和过滤条件拆分更清晰,后续排查问题更方便。
内容的提问来源于stack exchange,提问作者MarkL
相关产品推荐
相关产品推荐

