Преобразование типов данных в 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)