Синтаксическая ошибка 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.ТУЗ.Oledb для.12.0).

5 ответов


Я не думаю, что вы можете использовать кавычки вокруг имени таблицы, единственное имя, которое вы назначаете его. Вместо этого я бы заключил таблицу в скобки:[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, Oracle:"
  • в MySQL `
  • SQL-server:[ и ]

например: "OV2 BAS", bas."Ref ID" = ids."Ref ID", etc.


это зависит от используемого компонента database engine.
Для 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';

вы не указываете, какие СУБД вы используете, но я предполагаю SQL server, поэтому

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

... заключить имя поля в квадратные скобки. Используя кавычки, как вы, превращает имя поля в простую строку, которая не будет рассматриваться как имя поля SQL server.


для Microsoft Access оберните имена полей, которые содержат пробелы с обратными тиками, например, выберите "единицы Eng" из таблицы