2009-05-13 15 views
4

Oracle(バージョン8i)の文字列を整数に解析しようとしています。oracleで文字列を整数に変換する

私はすでにいない小数点以下の桁数を持つ数値に文字列を変換するためにマスクでTO_NUMBERを使用していOracle.DataAccessライブラリ

を通じて結果にアクセスしています。問題は、クライアントコードの値がintではなく小数点として取得されていることです。

+2

なぜODP」「C#の」とタグ付けしました。ネット"?それがOracleの質問であれば、これらのタグは必要ありません。 C#の質問の場合は、int.Parse( "42")を使用して文字列をintに変換できます。 – DonkeyMaster

+0

私はそれがC#の質問ではないと思いますので、質問を再編集してC#タグを削除することをお勧めします。 –

+1

ODP.Netの質問は、Oracle.DataAccessによって作成されたDataTable内で返される型です。 Client.OracleDataAdapterはintではなく小数です。 – JDunkerley

答えて

3

ラウンド関数(またはTRUNCや床の機能)を使用して整数に小数を変えることができます。これを回避するには、必要なネイティブ.NETタイプに値をキャストするためのいくつかの "Toxxxx"メソッドを持つOracleDecimalとして戻します。

while (myOracleDataReader.Read()) 
{ 
    int x = myOracleDataReader.GetOracleDecimal(0).ToInt32(); 
} 

(私はODP.NETは自宅でインストールされていないとして、上記のコードは、100%正確でない場合は、私を許してください。)

1

TO_NUMBERは、具体的にはTO_NUMBER('42', '99')バージョンです。

+0

Oracle内の値は整数ですが、これを試してみました。 DataTableへの出力はまだ10進数です。 – JDunkerley

+0

これはまだ.Net Decimal型を返します。 –

0

あなたは常にNUMBER列は常にODP.NETで小数として戻ってくる

7
CAST(field AS integer) 
+0

これはまだ.Net Decimal型を返します。 –

関連する問題