Почему DB2 не разрешила мне использовать столбец в предложении WHERE?

У меня есть удаленная база данных 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 - возможно, в вашей очищенной версии ошибка была удалена.

paxdiablo 17.09.2008 15:47
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
565
6

Ответы 6

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

Да, первый запрос работает, все таблицы и столбцы существуют, и у меня есть все необходимые права для их чтения. Я отредактировал вопросы, чтобы прояснить это.

Rowan 17.09.2008 15:42

Какой фактический 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 иногда дает вводящие в заблуждение ошибки. Вы можете попробовать следующие шаги по устранению неполадок:

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

Другие вопросы по теме