2009-06-24 17 views
6

Piszę zapytanie, aby zrobić kilka rzeczy. Ale jej nie działa tak, jak chcę go do:Konwersja typów danych w IBM DB2: BIGINT na VARCHAR

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

Problem polega na tym, TABLE2.id jest długa, a TABLE1.CORR_ID jest ciągiem.

Jak mogę to sprawić?

PS: Używam IBM UDB.

+0

Tytuł frazowanie jest bardzo ważne, jeśli chcesz, aby przyciągnąć ludzi do Twojego pytania. "Moje zapytanie jest zepsute" to rodzaj tytułu, który większość ludzi zignoruje. Jeśli jednak Twój tytuł wskazuje, że masz konkretny problem, ludzie będą bardziej skłonni przyjrzeć mu się bliżej. – Welbog

+0

ty. – jrharshath

Odpowiedz

14

Ok znalazłem metodę:

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

to dość intrygujące: nie można rzucić BIGINT do VARCHAR, ale:

  • można rzucić BIGINT char
  • i można rzucić CHAR na VARCHAR

to jest śmieszne!

1

Powinieneś móc oddawać wybraną kolumnę id dopasować typ danych corr_id

wybierz CORR_ID z tabela1 gdzie CORR_ID nie w (wybierz obsady (id jako varchar) od Table2)

+0

Sprawdź moje ans – jrharshath

+0

znacznie lepiej niż moja odpowiedź. Głosowałbym na to, gdybym miał jeszcze 2 punkty rep – GregA100k

2

DB2 umożliwia porównywanie kolumn VARCHAR i CHAR bez dodatkowego rzutowania, więc wszystko, co naprawdę trzeba zrobić, to odrzucić numer.

SELECT corr_id OD tabela1 GDZIE corr_id NOT IN (SELECT Char (id) FROM Table2)

Powiązane problemy