2013-07-09 5 views
2

다음 쿼리에서는 다른 부분에 정수 값을 제공하려고합니다. 줄 경우 오류 : 오류 코드 -1, SQL 상태 42X89 : 형식 'CHAR'및 'INTEGER'형식 호환되지 않습니다. 두 유형 모두 다른 유형에 할당 할 수 없습니다.java derby DB에서 CHAR를 INTEGER로 변환

select case 
when ID = 1 then 'Issue' 
when ID = 2 then 'Reload' 
when ID = 3 then 'Redeem' 
else ID 
end 
from TXN 
where CARDNO = '10001' 

어떻게하면됩니까?

답변

1

그냥 VARCHAR()

select case 
when ID = 1 then 'Issue' 
when ID = 2 then 'Reload' 
when ID = 3 then 'Redeem' 
else CAST(ID AS VARCHAR(2)) 
end 
from TXN 
where CARDNO = '10001' 
+0

여전히 오류가 발생합니다. 오류 코드 -1, SQL 상태 42846 : 'INTEGER'형식을 'VARCHAR'형식으로 변환 할 수 없습니다. – Manoj

+0

CARDNO의 데이터 유형은 무엇입니까 ?? – Nithesh

+0

CARDNO 데이터 유형은 VARCHAR – Manoj

0

캐스트 CHAR에 대신 VARCHAR에 해당 ID를 주연 :

select case 
when ID = 1 then 'Issue' 
when ID = 2 then 'Reload' 
when ID = 3 then 'Redeem' 
else CAST(ID AS CHAR(10)) 
end 
from TXN 
where CARDNO = '10001' 

가 지원되는 유형의 캐스팅을 위해 : http://db.apache.org/derby/docs/10.2/ref/rrefsqlj33562.html 문자에

0

캐스트는 괜찮지 만, 그것은 것입니다 모든 공간 패딩을 가지고 있으므로 char로 캐스트 한 다음 char을 varchar로 캐스팅 한 다음 RTRIM으로 캐스팅해야합니다.

관련 문제