Один из моих столбцов называется from
. Я не могу изменить имя, потому что я этого не сделал.
Могу ли я сделать что-то вроде SELECT from FROM TableName
или есть специальный синтаксис, чтобы избежать путаницы SQL Server?
Как обращаться с именами столбцов SQL, которые выглядят как ключевые слова SQL?
Ответ 1
Оберните имя столбца в скобках так, from
станет [from].
select [from] from table;
Также возможно использовать следующее (полезно при запросе нескольких таблиц):
select table.[from] from table;
Ответ 2
Пока вы это делаете - псевдоним это как что-то еще (или еще лучше, используйте представление или SP и осуждаете старый метод прямого доступа).
SELECT [from] AS TransferFrom -- Or something else more suitable
FROM TableName
Ответ 3
Если это было в PostgreSQL, используйте двойные кавычки вокруг имени, например:
select "from" from "table";
Примечание: Internally PostgreSQL автоматически преобразует все некорректированные команды и параметры в нижний регистр. Это приводит к тому, что команды и идентификаторы не чувствительны к регистру. sEleCt * из tAblE; интерпретируется как выберите * из таблицы;. Тем не менее, параметры внутри двойных кавычек используются как есть, и поэтому они чувствительны к регистру: выберите * из "таблицы"; и выберите * из "Таблица"; получает результат от две разные таблицы.
Ответ 4
Ваш вопрос, кажется, хорошо ответил здесь, но я просто хочу добавить еще один комментарий к этой теме.
Те, кто разрабатывает базу данных, должны хорошо знать зарезервированные ключевые слова и избегать их использования. Если вы обнаружите, что кто-то использует его, сообщите об этом (вежливо). Ключевое слово здесь зарезервированное слово.
Дополнительная информация:
"Зарезервированные ключевые слова не должны использоваться как имена объектов. Базы данных обновлены из более ранних версий SQL Server могут содержать идентификаторы, которые включают слова, не зарезервированные в предыдущем версии, но это зарезервированные слова для текущей версии SQL Server. Вы можете ссылаться на объект, используя идентификаторы с разделителями до имени может быть изменено." http://msdn.microsoft.com/en-us/library/ms176027.aspx
и
"Если ваша база данных содержит имена которые соответствуют зарезервированным ключевым словам, вы должны используйте идентификаторы с разделителями, когда вы обратитесь к этим объектам. Для большего информацию см. в разделе Идентификаторы (DMX)". http://msdn.microsoft.com/en-us/library/ms132178.aspx
Ответ 5
Если вы используете SQL Server, вы можете просто просто заключить квадратные скобки вокруг имени столбца или таблицы.
select [select]
from [table]
Ответ 6
Это два способа сделать это:
- Используйте обратную цитату здесь:
SELECT `from` FROM TableName
- Вы можете указать имя таблицы как:
SELECT TableName.from FROM TableName
Ответ 7
Привет, я работаю над системами 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
Ответ 8
Я также столкнулся с этой проблемой. И решение для этого - поместить [Column_Name] в запрос.
string query= "Select [Name],[Email] from Person";
Таким образом, он будет работать отлично.
Ответ 9
В бурении Apache используйте обратные кавычки:
select `from` from table;
Ответ 10
Вы можете поместить свое имя столбца в скобку, например:
Select [from] from < ur_tablename>
или
Поместите в темпоральную таблицу, затем используйте как хотите.
Пример:
Declare @temp_table table(temp_from varchar(max))
Insert into @temp_table
Select * from your_tablename
Здесь я просто предполагаю, что your_tablename содержит только один столбец (т.е. от).
Ответ 11
Я столкнулся с той же проблемой при попытке обновить столбец, имя которого было ключевым словом. Решение выше не помогло мне. Я решил это, просто указав имя таблицы следующим образом:
UPDATE `survey`
SET survey.values='yes,no'
WHERE (question='Did you agree?')
Ответ 12
Следующее будет работать отлично:
SELECT DISTINCT table.from AS a FROM table
Ответ 13
В MySQL, альтернативно, используя обратные кавычки (`), вы можете использовать пользовательский интерфейс для изменения имен столбцов. Щелкните правой кнопкой мыши таблицу > Таблица изменений > Изменить имя столбца, содержащее ключевое слово sql > Commit.
select [from] from <table>
Как примечание, вышесказанное не работает в MySQL