質問
Informixでは、 char(8)
型を money
型にキャストして、別の money
入力しますか
" tblAid.amt :: moneyをaid_amtとして使用
"動作しませんでした。
" (tblAid.amt * 1)AS aid_amt
"の使用動作しませんでした。
解決
これを試してください->
select (disb_amt::NUMERIC) disb_amt from tmp_kygrants;
金額を数値として比較できる場合があります。
他のヒント
最初の質問-いったいなぜ数値列に数値を格納しないのですか?これは、あなたの質問の残りの部分を無意味にします。また、システムのパフォーマンスが向上することも意味します。データ値を保存する必要がある場合は、明らかなタイプを使用します。データが文字列でない限り、文字列型を使用しないでください。
既に述べたように、非標準の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の方が賢明です。
'informixをいじってからしばらく経ちましたが、現時点では実行中のインスタンスはありません。ただし、ここで問題を引き起こす可能性のある2つのことがあります:
1)char(8)であるため、「クリーンアップ」ビットなしでは数値にキャストできない値を含むことができます。例えば。 " abc"。または「1,234,567.00」。
2)末尾のスペース。 (varcharではなくchar)。
明示的なキャスト(:: money)でどのinformixエラーが発生しますか?