Oracle(バージョン8i)の文字列を整数に解析しようとしています。oracleで文字列を整数に変換する
私はすでにいない小数点以下の桁数を持つ数値に文字列を変換するためにマスクでTO_NUMBER
を使用していOracle.DataAccessライブラリ
を通じて結果にアクセスしています。問題は、クライアントコードの値がintではなく小数点として取得されていることです。
Oracle(バージョン8i)の文字列を整数に解析しようとしています。oracleで文字列を整数に変換する
私はすでにいない小数点以下の桁数を持つ数値に文字列を変換するためにマスクでTO_NUMBER
を使用していOracle.DataAccessライブラリ
を通じて結果にアクセスしています。問題は、クライアントコードの値がintではなく小数点として取得されていることです。
ラウンド関数(またはTRUNCや床の機能)を使用して整数に小数を変えることができます。これを回避するには、必要なネイティブ.NETタイプに値をキャストするためのいくつかの "Toxxxx"メソッドを持つOracleDecimalとして戻します。
while (myOracleDataReader.Read())
{
int x = myOracleDataReader.GetOracleDecimal(0).ToInt32();
}
(私はODP.NETは自宅でインストールされていないとして、上記のコードは、100%正確でない場合は、私を許してください。)
TO_NUMBERは、具体的にはTO_NUMBER('42', '99')
バージョンです。
Oracle内の値は整数ですが、これを試してみました。 DataTableへの出力はまだ10進数です。 – JDunkerley
これはまだ.Net Decimal型を返します。 –
あなたは常にNUMBER列は常にODP.NETで小数として戻ってくる
CAST(field AS integer)
これはまだ.Net Decimal型を返します。 –
なぜODP」「C#の」とタグ付けしました。ネット"?それがOracleの質問であれば、これらのタグは必要ありません。 C#の質問の場合は、int.Parse( "42")を使用して文字列をintに変換できます。 – DonkeyMaster
私はそれがC#の質問ではないと思いますので、質問を再編集してC#タグを削除することをお勧めします。 –
ODP.Netの質問は、Oracle.DataAccessによって作成されたDataTable内で返される型です。 Client.OracleDataAdapterはintではなく小数です。 – JDunkerley