Почему в моем запросе появляется ошибка «SQL0134N Неправильное использование строкового столбца ...»? - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь получить «уникальные типы преступлений, которые были зарегистрированы в местах расположения ГАЗОВОЙ СТАНЦИИ» из таблицы CHICAGO_CRIME_DATA на ноутбуке Juptyter.

%sql select DISTINCT PRIMARY_TYPE from CHICAGO_CRIME_DATA WHERE LOCATION_DESCRIPTION = 'GAS STATION';

PRIMARY_TYPE и LOCATION_DESCRIPTION - имена столбцов. Я работаю в IBM DB2. Выдает ошибку.

ibm_db_sa: // ddk87262: ***@dashdb-txn-sbox-yp-lon02-01.services.eu-gb.bluemix.net: 50000 / BLUDB

(ibm_db_dbi.ProgrammingError) ibm_db_dbi :: ProgrammingError: Ошибка SQLNumResultCols: [IBM] [Драйвер CLI] [DB2 / LINUXX8664] SQL0134N Неправильное использование строкового столбца, переменной хоста, константы или функции "PRIMARY ». SQLSTATE = 42907 SQLCODE = -134

[SQL: выберите DISTINCT PRIMARY_TYPE из CHICAGO_CRIME_DATA WHERE LOCATION_DESCRIPTION = 'GAS STATION';]

(фон этой ошибки: http://sqlalche.me/e/f405)

Я дважды проверил имена столбцов. Код отображает результаты (с избыточными строками), если я не использую функцию Distinct.

Что может вызвать эту ошибку?

1 Ответ

2 голосов
/ 29 марта 2020

Проверьте тип данных столбца Db2 столбца PRIMARY_TYPE.

Вы можете посмотреть таблицу syscat.columns, чтобы увидеть типы данных столбца для PRIMARY_TYPE, если у вас есть доступ. Вы также можете использовать describe table CHICAGO_CRIME_DATA. Оператор create table также может быть задокументирован для вашей таблицы, показывающей тип данных столбца Db2.

Подробности этого сообщения об ошибке SQL0134N можно посмотреть здесь .

It вероятно, что тип данных столбца является одним из следующих типов: CLOB, DBCLOB, BLOB, LONG VARCHAR или LONG VARGRAPHI C, и это не допускается с помощью DISTINCT.

Это можно обойти, извлекая некоторые символы (например, substr et c.) из столбца и приведение к CHAR или VARCHAR, а затем используйте другое для этого типа.

...