Почему бы DB2 не позволить мне иметь столбец в предложении WHERE? - PullRequest
1 голос
/ 17 сентября 2008

У меня есть удаленная база данных 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.

Ответы [ 6 ]

3 голосов
/ 17 сентября 2008

Извините за очевидный ответ, но существует ли проблемная таблица? Ваш код выглядит как псевдокод из-за имен таблиц / столбцов, но обязательно перепроверьте правильность написания. Это не представление, которое может даже состоять из объединенных таблиц в разных базах данных / серверах?

2 голосов
/ 17 сентября 2008

Какой фактический SQL вы используете? Я не вижу ничего плохого в приведенном вами примере. Попробуйте найти неуместные запятые и / или кавычки, которые могут вызвать ошибку.

0 голосов
/ 10 июля 2009

DB2 иногда дает ложные ошибки. Вы можете попробовать выполнить следующие действия по устранению неполадок:

  1. Попробуйте выполнить код через DBArtisan или Центр управления DB2 и посмотреть, если вы получите правильный результат / ошибка сообщение.
  2. Попробуйте использовать schema_name.problemtable вместо просто проблемного
  3. Убедитесь, что столбец задачи тот же тип данных, что и вы сравнивая это с.
0 голосов
/ 02 октября 2008

Кажется, это должно работать в DB2. Какое у вас программное обеспечение для шрифтов?

0 голосов
/ 18 сентября 2008

Пожалуйста, запустите следующие операторы SQL. Для меня это работает нормально. Если у вас все еще есть эта странная ошибка, это будет ошибка DB2. У меня были некоторые проблемы с копированием кода из редакторов UNIX в Windows и наоборот. SQL не запускается, хотя выглядит нормально. Повторив заявление, я решил проблему.

создать таблицу проблемной ( foo varchar (10), бар int, проблемный столбец varchar (10) );

ВЫБРАТЬ t.foo, t.bar, t.problemcolumn ОТ проблемного т ГДЕ t.bar <60; </p>

ВЫБРАТЬ t.foo, t.bar, t.problemcolumn ОТ проблемного т ГДЕ t.problemcolumn = 'x' И t.bar <60; </p>

0 голосов
/ 17 сентября 2008

Работает ли он только с:

SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.problemcolumn = 'x'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...