Преобразование строки в целое число в oracle
Вопрос
Я пытаюсь разобрать столбец строк в Oracle (версия 8i) до целого числа.
Я получаю доступ к результатам через Oracle.Библиотека доступа к данным
Я уже использую TO_NUMBER
с маской для преобразования строки в число без десятичных знаков.Проблема в том, что значение в клиентский код извлекается как десятичное число, а не как int.
Решение
Столбцы ЧИСЕЛ всегда возвращаются в виде десятичных дробей в ODP.NET.Чтобы обойти это, извлеките его обратно как OracleDecimal , который имеет несколько методов "Toxxxx" для приведения значения к нужному вам собственному типу .NET.
while (myOracleDataReader.Read())
{
int x = myOracleDataReader.GetOracleDecimal(0).ToInt32();
}
(Простите меня, если приведенный выше код не на 100% верен, поскольку у меня дома нет установленного ODP.NET.)
Другие советы
CAST(field AS integer)
К_НОМЕР это то, чего вы хотите, в частности, TO_NUMBER('42', '99')
версия.
Вы всегда можете преобразовать десятичную дробь в целое число, используя функцию round (или функции trunc или floor).