Ответы:
Оберните имя столбца в скобки, например, from
становится [из].
select [from] from table;
Также можно использовать следующее (полезно при запросе нескольких таблиц):
select table.[from] from table;
select TableName.from from TableName;
PS: Это работает в MySQL
Если это было в PostgreSQL, используйте двойные кавычки вокруг имени, например:
select "from" from "table";
Примечание. Внутри PostgreSQL автоматически преобразует все команды и параметры без кавычек в нижний регистр. Это приводит к тому, что команды и идентификаторы не чувствительны к регистру. ВЫБРАТЬ * из ТАБЛИЦЫ; интерпретируется как select * from table; , Однако параметры внутри двойных кавычек используются как есть, и поэтому учитывают регистр: select * from "table"; и выберите * из «Таблицы»; получает результат из двух разных таблиц.
Это два способа сделать это:
SELECT `from` FROM TableName
SELECT TableName.from FROM TableName
Ваш вопрос, кажется, хорошо ответил здесь, но я просто хочу добавить еще один комментарий к этой теме.
Те, кто проектирует базу данных, должны хорошо знать зарезервированные ключевые слова и избегать их использования. Если вы обнаружите, что кто-то использует его, сообщите ему об этом (вежливо). Ключевым словом здесь является зарезервированное слово.
Больше информации:
«Зарезервированные ключевые слова не должны использоваться в качестве имен объектов. Базы данных, обновленные с более ранних версий SQL Server, могут содержать идентификаторы, которые включают слова, не зарезервированные в более ранней версии, но которые являются зарезервированными словами для текущей версии SQL Server. Вы можете обратиться к объект с помощью идентификаторов с разделителями, пока имя не может быть изменено. " http://msdn.microsoft.com/en-us/library/ms176027.aspx
и
«Если ваша база данных содержит имена, которые соответствуют зарезервированным ключевым словам, вы должны использовать идентификаторы с разделителями при обращении к этим объектам. Для получения дополнительной информации см. Идентификаторы (DMX)». http://msdn.microsoft.com/en-us/library/ms132178.aspx
Если вы используете SQL Server, вы можете просто заключить квадратные скобки в столбец или имя таблицы.
select [select]
from [table]
Я тоже сталкивался с этой проблемой. И решение для этого состоит в том, чтобы поместить [Column_Name] как это в запросе.
string query= "Select [Name],[Email] from Person";
Так что это будет работать на отлично.
Привет, я работаю на системах Teradata, которые полностью совместимы с ANSI. Используйте двойные кавычки "", чтобы назвать такие столбцы.
Например type
, зарезервированное ключевое слово SQL, и при использовании в кавычках,type
обрабатывается как указанное пользователем имя.
Смотрите пример кода ниже:
CREATE TABLE alpha1
AS
(
SEL
product1
type_of_product AS "type"
FROM beta1
) WITH DATA
PRIMARY INDEX (product1)
--type is a SQL reserved keyword
TYPE
--see? now to retrieve the column you would use:
SEL "type" FROM alpha1
Вы можете поместить название столбца в скобки, например:
Select [from] from < ur_tablename>
Или
Положите в таблицу времен, затем используйте, как вам нравится.
Пример:
Declare @temp_table table(temp_from varchar(max))
Insert into @temp_table
Select * from your_tablename
Здесь я просто предполагаю, что your_tablename содержит только один столбец (т.е. from).
[from]
это единственный столбец, your_tablename
который получил.
"[Total]"
? Или, может быть, есть способ избежать этого, что-то вроде [\[Total\]]
?
Я столкнулся с той же проблемой при попытке обновить столбец, имя которого было ключевым словом . Решение выше не помогло мне. Я решил это, просто указав имя таблицы следующим образом:
UPDATE `survey`
SET survey.values='yes,no'
WHERE (question='Did you agree?')
Следующее будет работать отлично:
SELECT DISTINCT table.from AS a FROM table
В MySQL, в отличие от использования обратных кавычек (`), вы можете использовать пользовательский интерфейс для изменения имен столбцов. Щелкните правой кнопкой мыши таблицу> Изменить таблицу> Изменить имя столбца, содержащее ключевое слово sql> Фиксация.
select [from] from <table>
Как примечание, выше не работает в MySQL
Судя по ответам здесь и собственному опыту. Единственный приемлемый ответ, если вы планируете быть переносимым, это не использовать ключевые слова SQL для таблицы, столбца или других имен.
Все эти ответы работают в разных базах данных, но, очевидно, многие из них не поддерживают решение ANSI.
SELECT "from" FROM TableName
, красиво и портативно!