SQL查询语法错误 - 字段名称中的空格

时间:2011-11-02 16:48:06

标签: sql ms-access-2007 syntax-error

我的应用程序使用的数据库包含包含空格的字段名称。我相信这是我的问题的原因。这是一个典型的查询:

SELECT * FROM 'OV2 BAS' AS bas 
INNER JOIN 'OV2 RefID' AS ids ON 'bas.Ref ID' = 'ids.Ref ID' 
WHERE ids.ENUM_H = 'TDischarge';

如何处理字段名称中的空格?感谢。

其他信息

这是为了访问使用MS Access 2007(Microsoft.ACE.OLEDB.12.0)创建的数据库。

5 个答案:

答案 0 :(得分:13)

我认为你不能在实际的表名周围使用引号;只有你指定给它的名字。我会将表格换成括号:[OV2 BAS]

您也不能在加入语法周围加上引号。试试这个:

SELECT * FROM [OV2 BAS] AS bas INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID] WHERE ids.ENUM_H = 'TDischarge';

答案 1 :(得分:9)

'替换为

  • postgreSQL,Oracle:"
  • MySQL `
  • SQL-server:[]

例如:"OV2 BAS"bas."Ref ID" = ids."Ref ID"

答案 2 :(得分:2)

对于Microsoft Access,请包含带有后退标记的空格的字段名称,例如选择`Eng Units` FROM Table

答案 3 :(得分:1)

这取决于您正在使用的数据库引擎 对于SQL Server,您必须将字段名称放在括号中:[ ]

SELECT * FROM [OV2 BAS] AS bas 
INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID]
WHERE ids.ENUM_H = 'TDischarge';

答案 4 :(得分:1)

您没有指定您正在使用哪个DBMS,但我猜测SQL服务器,所以

SELECT *
FROM [OV2 BAS] AS bas
     ^^^^^^^^^

...将字段名称括在括号中。使用引号,将字段名称转换为纯字符串,SQL服务器不会将其视为字段名称。