Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2014, 21:18   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
это в MySQL выпендрились.
А я и не спорю. Просто констатирую факт.
И кстати выпендреж этот вполне оправдан как по мне.
Цитата:
8Observer8
Во-первых: Текст ошибки.
Во-вторых: У тебя же пробелов нет в именах, ковычки не пиши вообще никакие.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2014, 21:22   #12
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Вот текст:
Цитата:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"select_table" WHERE "Name" LIKE '_van' LIMIT 0, 30' at line 2
8Observer8 вне форума Ответить с цитированием
Старый 23.07.2014, 21:37   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
30'
А это что за ковычка? О_о
Ты этот запрос где пробуешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2014, 21:44   #14
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Пробую в phpMyAdmin. Использую XAMPP.

Вот так работает:

Код:
SELECT `Name`
FROM `select_table`
WHERE `Name` LIKE '_van'
Так нет:

Код:
SELECT "Name"
FROM "select_table"
WHERE "Name" LIKE '_van'
Текст ошибки:
Цитата:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"select_table" WHERE "Name" LIKE '_van' LIMIT 0, 30' at line 2
Я просто придрался к фразе:

Цитата:
Сообщение от Stilet Посмотреть сообщение
`` делают тоже самое что и "" - т.е. указывают на объект БД.
Да, понимаю, что так надо писать:

Код:
SELECT Name
FROM select_table
WHERE Name LIKE '_van'
Но почему не так?

Код:
SELECT Name
FROM select_table
WHERE Name LIKE "_van"
8Observer8 вне форума Ответить с цитированием
Старый 23.07.2014, 21:45   #15
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А это что за ковычка? О_о
Это phpMyAdmin так выдает.

Теперь про правила. По стандарту подразумевается, что в общем случае имена таблиц и полей отвечают правилам формирования идентификаторов. Регистр имен в SQL не различается. СУБД хранят имена в своей служебной инфе в некотором нормализованном виде и сравнивают идентификаторы из запросов без учета регистра.

Как конкретно хранятся идентификаторы в СУБД -- зависит от реализации (могу ошибаться). Например, Oracle хранит неэкранированные идентификаторы в верхнем регистре.

Экранирование кавычками отключает регистронезависимое сравнение, регистр начинает иметь значение. Возможно, в MySQL решили скрестить регистронезависимое сравнение с произвольными символами в именах, ограничив их косыми апострофами. Не знаю, мне лень в документацию MySQL лезть.
Vapaamies вне форума Ответить с цитированием
Старый 23.07.2014, 22:16   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Но почему не так?
Потому что " " используются для имен, а ' ' для строковых констант
"_van" - это же строка. Это не имя поля. Поэтому нужно писать именно в одинарных классических ковычках.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.07.2014, 13:46   #17
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я так понял, что в MySQL (или точнее в командном поле phpMyAdmin, если так можно выразиться) для имён полей можно использовать только косые кавычки `` (либо вообще никакие, если нет пробелов, например, в названиях столбцов). А строковые константы писать с одинарными ('_van') или двойными ("_van"). Буду писать с одинарными. Всем спасибо!

Код:
SELECT Name
FROM select_table
WHERE Name LIKE '_van'
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одинарные кавычки Delphi Hard_core Помощь студентам 4 27.06.2011 11:30
запись ковычки в документ whatever Помощь студентам 2 29.05.2011 18:27
Убрать ковычки Furyon PHP 1 22.04.2011 12:17
Что означают в Скилабе ковычки? Регина0989 Помощь студентам 6 16.02.2010 08:38
Ковычки в SQL запросе XPAiN БД в Delphi 13 22.02.2008 13:36