2008-10-07 2 views
2

Informix에서는 어떻게 다른 money 유형과 비교할 수 있습니까? money 유형으로 변환하려면 char(8) 유형을 입력 할 수 있습니까?Informix에서의 캐스팅

"tblAid.amt::money as aid_amt"을 사용하면 작동하지 않습니다. "(tblAid.amt * 1) AS aid_amt"을 사용하면 작동하지 않습니다.

+1

사용중인 Informix 버전은 무엇입니까? IDS 7.31을 사용하는 경우 주조 표기법이 작동하지 않습니다. –

답변

5

노력이 ->

select (disb_amt::NUMERIC) disb_amt from tmp_kygrants; 

당신은 숫자로 금액을 비교할 수 있습니다.

+0

괄호는 불필요하지만 유해하지 않아야합니다 (시스템에 대한 답변이 미묘하기 때문에 항상 대답해야합니다. –

1

'나는 informix로 놀았 기 때문에 잠시 동안이었고, 현재 실행중인 인스턴스가별로 유용하지 않습니다. 그러나 여기에 문제가 발생할 수있는 두 가지가 있습니다.

1) char (8)이므로 '정리'없이 숫자에 캐스팅 할 수없는 값을 포함 할 수 있습니다. 예 : "알파벳". 또는 "1,234,567.00".
2) 뒤 공백. (varchar와 반대로 char).

명시 적 캐스트 (:: money)에 어떤 informix 오류가 발생합니까?

5

첫 번째 질문 - 왜 숫자 열에 숫자 값을 저장하지 않는 이유가 무엇입니까? 이렇게하면 남은 질문을 논리적으로 할 수 있습니다. 또한 시스템 성능이 향상 될 수도 있습니다. 데이터 값을 저장해야 할 때는 명백한 유형을 사용하십시오. 데이터가 문자열이 아닌 이상 문자열 유형을 사용하지 마십시오. 돈 (8,2)를 사용하여, 예를 들어 -

SELECT some_column::MONEY FROM WhereEver; 

또한 캐스트 유형에 대한 더 조심 수 있습니다

으로 이미 당신은 표준이 아닌 인포믹스 캐스트 표기법을 사용할 수 있습니다 지적했다. 또한 표준 표기법을 사용할 수 있습니다

SELECT CAST(some_column AS MONEY(8,2)) FROM WhereEver; 

이 나중에 IDS 9.x의 이상을 사용하는 가정을 - 오래된 제품은 전혀 캐스트를 지원하지 않습니다. 그러나 일반적으로 Informix는 자동으로 변환 (예 : 숫자를 문자열로 변환)하는 것이 좋습니다. 그러나 문자열은 사전 적으로나 수치 적으로 비교되지 않으므로 CAST는이 컨텍스트에서 현명합니다. 그러나 올바른 유형을 사용하여 캐스트를 사용하지 않아도 여전히 현명합니다.