Столбец или глобальная переменная не найдена

Проблема заключается в том, что при запросе таблицы, созданной с помощью Aqua Data Studio в нашей базе данных IBM DB2, имена столбцов нельзя указать, если я не использую имя системы. Таблицы, сделанные недавно, не имеют этой проблемы. Запрос может легко найти в них имена столбцов. Также нет проблем с использованием подстановочных знаков, и имена столбцов отображаются нормально. Для ясности:

  • это работает: ВЫБРАТЬ * ИЗ WUNITS.DVIRS
  • это работает: ВЫБЕРИТЕ ID___00001 ИЗ WUNITS.DVIRS
  • Это не так: ВЫБРАТЬ ИД ИЗ WUNITS.DVIRS
  • Это работает для более старых таблиц, созданных таким же образом: ВЫБЕРИТЕ Id FROM WUNITS.DVIRS

Вот скриншот определений столбцов

введите здесь описание изображения

Что я делаю неправильно?


person Hoodlum    schedule 03.01.2018    source источник
comment
Можете ли вы подключиться к базе данных без этого клиента (Aqua Data Studio)? Скажите через консоль linux? Кажется, что этот клиент создает псевдонимы для отображения структуры таблицы вместо реальной структуры таблицы. Попробуйте запустить на нем: describe table WUNITS.DVIRS и отредактируйте свой вопрос с результатом   -  person Jorge Campos    schedule 04.01.2018
comment
выберите Id из mytable. Похоже, что нижний регистр включен.   -  person danny117    schedule 04.01.2018


Ответы (1)


Поскольку вы упомянули имя системы, я предполагаю, что вы используете Db2 для IBM i ....

Я подозреваю, что вы создали таблицу с именами столбцов в кавычках ... иначе вы бы не увидели имена столбцов со смешанным регистром, все они были бы ЗАГЛАВНЫМИ.

Например:

create table dtcwilt.dvirs (
  "Id" bigint
  , "AssetNumber" varchar(25)
  , WoNumber bigint
  , WoStatusId int
)

Не уверен, какой инструмент вы используете для отображения столбцов, но инструмент схемы ACS покажет имя в кавычках.

введите здесь описание изображения

Кавычки на самом деле являются частью имени, вам нужно будет использовать имя в кавычках, с правильными заглавными буквами, при выборе:

Это должно работать:

SELECT "Id" FROM WUNITS.DVIRS

Это не будет:

SELECT "ID" FROM WUNITS.DVIRS
person Charles    schedule 04.01.2018
comment
Вот и все! Я провел слишком много времени в мире Microsoft. Теперь мне нужно исправить полдюжины таблиц. - person Hoodlum; 04.01.2018