У меня есть удаленная база данных DB2, к которой я обращаюсь через ODBC. Когда у меня есть запрос вроде
SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.bar < 60;
он работает как шарм, поэтому таблица и столбцы, очевидно, существуют.
Но если я укажу проблемный столбец в предложении WHERE
SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.problemcolumn = 'x'
AND t.bar < 60;
это дает мне ошибку
Table "problemtable" does not exist.
Что могло быть причиной этого? Я дважды проверил написание и могу вызвать проблему, просто включив столбец проблем в предложение where.


Извините за очевидный ответ, но существует ли таблица проблем? Ваш код выглядит как псевдокод из-за имен таблиц / столбцов, но не забудьте дважды проверить правильность написания. Это не представление, которое может даже состоять из объединенных таблиц в разных базах данных / серверах?
Да, первый запрос работает, все таблицы и столбцы существуют, и у меня есть все необходимые права для их чтения. Я отредактировал вопросы, чтобы прояснить это.
Какой фактический SQL вы используете? Я не вижу ничего плохого в приведенном вами примере. Попробуйте найти неуместные запятые и / или кавычки, которые могут вызвать ошибку.
Работает ли он только с:
SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.problemcolumn = 'x'
Пожалуйста, запустите следующие операторы SQL. У меня работает нормально. Если у вас все еще есть эта странная ошибка, это будет ошибка DB2. Однажды у меня были проблемы с копированием кода из редакторов UNIX в Windows и наоборот. SQL не запускался, хотя выглядел нормально. Тогда повторный ввод утверждения устранил мою проблему.
создать таблицу проблемную таблицу ( foo varchar (10), бар int, проблема столбца varchar (10) );
ВЫБЕРИТЕ t.foo, t.bar, t.problemcolumn ИЗ проблемной таблицы t ГДЕ t.bar <60;
ВЫБЕРИТЕ t.foo, t.bar, t.problemcolumn ИЗ проблемной таблицы t ГДЕ t.problemcolumn = 'x' И т. Бар <60;
Думаю, это должно работать в DB2. Какое у вас программное обеспечение для шрифтов?
DB2 иногда дает вводящие в заблуждение ошибки. Вы можете попробовать следующие шаги по устранению неполадок:
Опубликуйте фактический SQL - возможно, в вашей очищенной версии ошибка была удалена.