Синтаксическая ошибка 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" из таблицы