Informix では、別の型と比較できるようchar(8)
に、型を型にキャストするにはどうすればよいですか?money
money
" tblAid.amt::money as aid_amt
" を使用しても機能しませんでした。" (tblAid.amt * 1) AS aid_amt
" を使用しても機能しませんでした。
最初の質問 - なぜ数値列に数値を格納しないのですか? これにより、質問の残りの部分が無意味になります。また、システムのパフォーマンスが向上することも意味します。データ値を格納する必要がある場合は、明らかな型を使用してください。データが文字列でない限り、文字列型を使用しないでください。
すでに述べたように、非標準の Informix キャスト表記を使用できます。
SELECT some_column::MONEY FROM WhereEver;
たとえば、MONEY(8,2) を使用して、キャスト タイプに注意することもできます。標準表記を使用することもできます。
SELECT CAST(some_column AS MONEY(8,2)) FROM WhereEver;
これは、IDS 9.x 以降を使用していることを前提としています。古い製品はキャストをまったくサポートしていません。ただし、一般に、Informix は自動的に変換を行う (たとえば、数値を文字列に変換する) という点では優れています。ただし、文字列は数値ではなく辞書式に比較されるため、このコンテキストでは CAST の方がおそらく賢明ですが、最初に正しい型を使用してキャストの必要性を回避する方が賢明です。
これを試してください -->
select (disb_amt::NUMERIC) disb_amt from tmp_kygrants;
金額を数値として比較できる場合があります。
'informixで遊んでからしばらく経ちましたが、現時点では実行中のインスタンスが手元にありません。ただし、ここで問題を引き起こす可能性のあるものが2つあります。
1)char(8)であるため、「クリーンアップ」を少し行わないと数値にキャストできない値を含めることができます。例:「abc」。または「1,234,567.00」。
2)トレーリングスペース。(varcharではなくchar)。
明示的なキャスト(:: money)でどのようなinformixエラーが発生しますか?