Как выбрать имя столбца с пробелом в MySQL [дубликат]


93

Я работаю над проектом, в котором другой разработчик создал таблицу с именами столбцов, например 'Business Name'. Это пробел между двумя словами. Если я запускаю SELECTоператор с «Business Name», он говорит, что нет столбца с именем «Business».

Как я могу решить эту проблему?


У меня недостаточно репутации, чтобы правильно комментировать, поэтому помечено в конце: решение, опубликованное выше в комментариях: `annoying_table`.` Business Name` не сработало для меня в mySQL в инструкции where. Удаление обратных кавычек в имени таблицы действительно сработало: например, annoying_table.`Business Name`
Tim0th1

Ответы:


163

Как правило, первый шаг - не делать этого в первую очередь, но если это уже сделано, вам нужно прибегнуть к правильному цитированию имен столбцов:

SELECT `Business Name` FROM annoying_table

Обычно подобные вещи создаются людьми, которые использовали что-то вроде Microsoft Access и всегда используют графический интерфейс для выполнения своих задач.


@tadman Если я скопирую и вставлю ваш запрос, он будет работать, но если я наберу одинарную кавычку с клавиатуры, это не сработает. т.е. ВЫБРАТЬ «Название компании» ИЗ
annoying_table

17
Это потому, что это не одинарные кавычки, а скорее символы галочки, которые вы обычно можете найти на клавиатуре слева от цифры 1.
Петерм

5
Есть три вида кавычек: одинарные ', двойные "и обратные `. В MySQL первые два эквивалентны и могут использоваться взаимозаменяемо. На других платформах это не всегда так, и Postgres, в частности, относится к ним иначе. Обратные кавычки используются только для экранирования имени базы данных или столбца.
tadman 07

скобки [] у меня не работали. Ошибок нет, но просто не отображалось. `с другой стороны работал отлично.
Джей

1
@Robert Тогда вы бы написали это так: `annoying_table`.` Business Name`.
Эрик Черпняк

20

Если двойные кавычки не работают, попробуйте заключить строку в квадратные скобки.

Например:

SELECT "Business Name","Other Name" FROM your_Table

можно изменить как

SELECT [Business Name],[Other Name] FROM your_Table


17

Вам нужно использовать обратную кавычку вместо одинарных кавычек:

Одиночная кавычка - 'Business Name'- Неправильно

Обратный апостроф - `Business Name`- правильный


3

Каждому свое, но правильный способ закодировать это - переименовать столбцы, вставив подчеркивание, чтобы не было пробелов. Это гарантирует отсутствие ошибок при кодировании. При печати имен столбцов для публичного показа вы можете выполнить поиск и заменить, чтобы заменить подчеркивание пробелом.


0

Я попал сюда с проблемой MS Access.

Обратные кавычки хороши для MySQL, но они создают странные ошибки, такие как «Недопустимое имя запроса: Query1» в MS Access, только для MS Access используйте квадратные скобки:

Это должно выглядеть так

SELECT Customer.[Customer ID], Customer.[Full Name] ...

-3

Я думаю, что двойные кавычки тоже работают:

SELECT "Business Name","Other Name" FROM your_Table

Но я тестировал только на SQL Server, а не на mySQL, если кто-то работает с MS SQL Server.


5
При этом всегда будет выбираться строка «Business Name», а не содержимое столбца.
JonasB

@JonasB Пожалуйста, проверьте еще раз, я использовал двойные кавычки, а не одинарные .... Одиночные кавычки приведут к строке, двойные кавычки не будут.
Vin.X

Вопрос был конкретно о MySQL и на сервере MySQL со стандартными настройками двойные и одинарные кавычки эквивалентны. См. Этот ответ для получения дополнительной информации, почему использовать двойные кавычки в MySQL - плохая идея: stackoverflow.com/a/14123649/4172652
JonasB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.