Преобразование типов данных в IBM DB2: BIGINT в VARCHAR

Я пишу запрос, чтобы сделать некоторые вещи. Но это не работает так, как я хочу:

select CORR_ID from TABLE1
where CORR_ID not in (select id from TABLE2)

проблема, ТАБЛИЦА2.ID-это долго, пока ТАБЛИЦА1.CORR_ID является строкой.

Так как я могу заставить его работать?

PS: я использую IBM UDB.

3 ответов


хорошо, я нашел метод:

select CORR_ID from TABLE1 where CORR_ID not in 
(select CAST( CAST(id AS CHAR(50)) AS VARCHAR(50) ) from TABLE2)

Это довольно интригующе: вы не можете бросить BIGINT в VARCHAR, но:

  • вы можете бросить BIGINT в CHAR
  • и вы можете бросить шар в VARCHAR

Это смешно!


DB2 позволяет сравнивать столбец VARCHAR и CHAR без дополнительного приведения, поэтому все, что вам действительно нужно сделать, это привести число.

выберите corr_id из таблицы 1, где corr_id нет (выберите CHAR (id) из таблицы 2)


вы должны иметь возможность привести выбранный столбец id в соответствие с типом данных corr_id

выберите CORR_ID из таблицы 1 где CORR_ID не в (выберите cast (id как varchar) из таблицы 2)