2009-11-16 4 views
0

Я бегу следующий запрос к .gdb-файл:Interbase SQL SELECT запрос с использованием СЛУЧАЙ

SELECT CASE USERS.USERID WHEN 1 THEN 'God' ELSE 'Somebody else' END FROM USERS; 

Однако, работает в основном один и тот же запрос к .ib-файл, я получаю «Ошибка в строке 1 Динамическая ошибка SQL, код ошибки SQL = -104, Неизвестный токен - строка 1, символ 17 ". Кажется, он не признает часть CASE USERS.USERID. В IBConsole в .ib-файле запущен SQL-диалект 3, а в .gdb-файле работает диалект 1. Это имеет значение? В чем разница между .ib-файлом и .gdb-файлом?

ответ

0

.gdb и .ib являются расширениями файлов juast. Они ничего не влияют.

Я предполагаю, что проблема здесь - чувствительность к регистру. В соответствии с «разделителями идентификатором» функции стандарта SQL, если использовать двойные кавычки при создании таблицы, т.е .:

CREATE TABLE "Users" (
    "UserId" INTEGER NOT NULL PRIMARY KEY, 
    /* ... */ 

... то идентификатор является чувствительным к регистру. Сделав это, вы должны всегда использовать (1) разделители (двойные кавычки) и (2) правильный случай, когда вы делаете что-нибудь со столом.

Раздражающий, да, но стандарт SQL требует этого. SQL Dialect 3 гораздо более строго соблюдает стандарт SQL, включая идентификаторы с разделителями.

Чтобы обойти это, не используйте двойные кавычки при создании таблицы, если вы действительно не хотите эту «функцию».

+0

Спасибо Крейг, я бы хотел подтвердить это. К сожалению, моя установка interbase завершилась после того, как я добавил и удалил базу данных с помощью IBConsole. Я дам вам знать, когда у меня все получится. – conciliator

Смежные вопросы