我正在尝试将 Oracle(版本 8i)中的一列字符串解析为整数。
我正在通过 Oracle.DataAccess 库访问结果
我已经使用TO_NUMBER
掩码将字符串转换为没有小数位的数字。问题是客户端代码中的值被检索为十进制而不是整数。
CAST(field AS integer)
NUMBER 列在 ODP.NET 中始终以小数形式返回。要解决这个问题,请将其作为 OracleDecimal 拉回,它有几个“Toxxxx”方法可以将值转换为您需要的本机 .NET 类型。
while (myOracleDataReader.Read())
{
int x = myOracleDataReader.GetOracleDecimal(0).ToInt32();
}
(如果上面的代码不是 100% 正确,请原谅我,因为我家里没有安装 ODP.NET。)
TO_NUMBER是您想要的,特别是TO_NUMBER('42', '99')
版本。
您始终可以使用 round 函数(或 trunc 或 floor 函数)将小数转换为整数