Подтвердить что ты не робот

.NET Decimal = что в SQL?

Какой лучший тип данных в SQL для представления Decimal в .NET?

Мы хотим хранить десятичные числа с точностью до 9 десятичных знаков и избегать ошибок округления и т.д. на лицевой стороне.

Чтение о типах данных, которое появляется с помощью Decimal в .NET, является лучшим вариантом, потому что вы не получите ошибок округления, хотя это немного медленнее, чем Double.

Мы хотим переносить это до БД и требовать минимальные проблемы с преобразованием при перемещении данных через слои. Любые предложения?

4b9b3361

Ответ 1

Итак, мы провели некоторое тестирование на SQL Server. Похоже, что тип sql decimal не может полностью хранить .net десятичное число.

SQL Server может хранить число до 38 десятичных цифр в длину. Это общее количество цифр слева и справа от десятичной точки. Вы устанавливаете "Масштаб", который сообщает SQL-серверу, сколько десятичных цифр зарезервировано для числа справа от десятичной точки. Если вы установите масштаб, который уберет от числа цифр слева от десятичной точки. (Precision - Scale = число десятичных цифр слева от десятичной точки)

.NET может представлять до 28 цифр справа от десятичной точки и 29 влево. Это потребует точности 57 в SQL Server, но максимальная доступность - 38.

Итак, если вы хотите получить как можно больше точности, а ваш номер достаточно мал, вы можете сделать это:

decimal(38, 28)

Это оставит вас с 10 цифрами влево и 28 цифрами справа. Поэтому любое число, превышающее 9999999999, не может быть представлено, но вы не потеряете точность при совершении транзакций валютного типа.

С другой стороны, если ваши номера очень велики, вы можете сохранить их с помощью этого объявления:

decimal(38, 9)

Это позволит вам хранить самое большое число, которое может хранить десятичный символ .net, что равно 29 цифрам. Это оставило бы вас с точностью до 8 десятичных цифр.

Если ни одно из этих звуков не привлекательно, вы можете просто сохранить их как varchar. Это позволит вам сохранить любое .net десятичное число, но это не позволит вам выполнять какие-либо вычисления на них в SQL.

Ответ 3

Если вы используете SQL Server, эта таблица может помочь с сопоставлениями типов данных.