#sql #h2
#sql #h2
Вопрос:
Я выполняю следующий запрос
SELECT *
FROM USER_MODEL
WHERE "name" = "Administrator"
Однако я получаю сообщение об ошибке, не уверен, почему значение также считается именем столбца.
Столбец «Администратор» не найден; Инструкция SQL:
Когда я попытался использовать одинарные кавычки.
SELECT *
FROM USER_MODEL
WHERE "name" = 'Administrator'
Затем H2 снова жалуется
Литералы такого рода не допускаются; Оператор SQL:
Если имя не заключено в двойные кавычки. H2 преобразует имя столбца в верхний регистр.
SELECT *
FROM USER_MODEL
WHERE name = "Administrator"
Столбец «ИМЯ» не найден; оператор SQL:
Нужна помощь в том, как работает запрос H2.
Ответ №1:
Вы должны использовать этот запрос
SELECT *
FROM USER_MODEL
WHERE name = 'Administrator'
Комментарии:
1. H2 не допускает одинарных кавычек. Во-вторых, если я даю имя, оно преобразует его в верхний регистр и выполняет поиск имени столбца. и выдает ошибку.
2. Вы уверены? Грамматика SQL ( h2database.com/html/grammar.html#expression ) предполагает, что так оно и есть.
3. да, я уверен .. 🙁
Ответ №2:
Итак, наконец-то получил решение, мне пришлось выполнить SET ALLOW_LITERALS ALL . чтобы разрешить одинарные кавычки в моем запросе.
По умолчанию h2 отключил это, чтобы предотвратить внедрение SQL.
Комментарии:
1. В H2 все литералы разрешены по умолчанию, такое сообщение об ошибке может появиться только тогда, когда они были явно отключены.