Відповіді:
Загорніть назву стовпця в дужки так, from
стає [з].
select [from] from table;
Можливо також використовувати наступне (корисно при запиті декількох таблиць):
select table.[from] from table;
select TableName.from from TableName;
PS: Це працює в MySQL
Якщо він був у PostgreSQL, використовуйте подвійні лапки навколо імені, наприклад:
select "from" from "table";
Примітка: Внутрішньо PostgreSQL автоматично перетворює всі команди, які не котируються, у малі регістри. Це означає, що команди та ідентифікатори не залежать від регістру. sEleCt * від tAblE; інтерпретується як select * з таблиці; . Однак параметри всередині подвійних лапок використовуються як є, і тому ARE чутливі до регістру: виберіть * з "таблиці"; і виберіть * із "Таблиці"; отримує результат з двох різних таблиць.
Це два способи зробити це:
ВИБІРТИ `від` ІЗ Таблиці
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
Тут я просто припускаю, що ваше_таблиця містить лише один стовпець (тобто з).
[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
, приємно і портативно!