Из вашего комментария, если вы не выполняете арифметику (то есть это просто идентификатор), это не обязательно - и, вероятно, просто не должно быть - номер в первую очередь. Просто обработайте его как строку в как базе данных, так и потребляющем приложении, и продолжайте движение.
Однако для будущих посетителей на вопрос, кто на самом деле имеют число, есть два варианта я могу думать:
- Использование
varchar
и BigInteger.Parse(string)
/BigInteger.ToString()
- Использование
varbinary
и BigInteger..ctor(byte[])
/BigInteger.ToByteArray()
При переходе на двоичный маршрут может быть преимущество производительности или пространства, но оно также может ограничить другие приложения, которые должны использовать значение. ИМХО, хотя, если вы не будете разбирать многие из них в секунду, я сомневаюсь, что это действительно стоит хлопот - и в наши дни хранение дешево.
Кроме того, строки кажутся де-факто метод сериализации в эти дни (например, XML или JSON), а также хранение в varchar
также позволит вам использовать XML в SQL Server имеется прямо из коробки.
Третьим вариантом является создание типа CLR для обертывания BigInteger
, поэтому вы можете использовать его непосредственно в SQL Server (то есть для сравнения и арифметики). Опять же, не уверен, что это стоит хлопот.
Является ли ваше действительно большое количество предназначенным для использования в качестве числа для арифметики, или это просто какой-то идентификатор? –
Из того, что я понимаю, число выпущено из системы Oracle из какого-либо правительственного агентства в качестве уникального идентификатора, оно может достигать 1 - 50 номеров в длину, и нам нужно сохранить это в нашем приложении. – bhole
Числовые типы: представленный в памяти таким образом, чтобы эффективно выполнять арифметические операции (добавление/умножение и т. д.). Ваши номера - это всего лишь идентификаторы, состоящие из десятичных цифр, и не * действительно * представляют число (вы никогда не будете использовать числовое представление), поэтому вы должны хранить их как строки. –