SQL查询语法错误 - 字段名称中的空格
我的应用程序使用的数据库具有包含空格的字段名称。我相信这是我的问题的原因。以下是一个典型的查询:SQL查询语法错误 - 字段名称中的空格
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)做了一个数据库。
我不认为你可以在实际的表名称周围使用引号;只有你分配给它的名字。我会用括号括起来:[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';
与
- PostgreSQL里,甲骨文替换
'
:"
- MySQL的
`
- SQL服务器:
[
和]
例如:"OV2 BAS"
,bas."Ref ID" = ids."Ref ID"
等
+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';
这是为了访问使用MS Access 2007(Microsoft.ACE.OLEDB.12.0)制作的数据库。 –
你没有指定你使用的DBMS,但我猜SQL服务器,所以
SELECT *
FROM [OV2 BAS] AS bas
^^^^^^^^^
...将括号中的字段名称括起来。按照原样使用引号,将字段名称转换为纯字符串,SQL Server不会将其视为字段名称。
这是为了访问使用MS Access 2007(Microsoft.ACE.OLEDB.12.0)制作的数据库。 –
好的。括号也会在那里工作。考虑重命名你的领域,所以如果你可以的话,他们中没有空格 - 间隔的名字会引起痛苦(就像你现在发现的那样)。 –
您必须在JOIN子句中取消引用字段名称 - 引用字段名称将它们转换为字符串,并且不会将其视为字段名称。 '... ON bas [Ref ID] = ids。[Ref ID]' –
对于Microsoft Access,将包含空格的字段名用换行符(例如, SELECT`Eng Units` FROM Table
您使用的是什么RDBMS? –
这是为了访问使用MS Access 2007(Microsoft.ACE.OLEDB.12.0)制作的数据库。 –