Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 сжатие чисел  [new]
Vladimir _ _
Member

Откуда:
Сообщений: 14
Дано:
1. В БД1 имеем таблицу в одном из полей, которой лежат целые числа длиной 11 и 12 разрядов
2. В БД2 есть таблица в одном из полей, которой лежат целые числа длиной 10 разрядов
Требуется:
Числа из БД1 переложить в БД2.

Увеличить длину числа в БД2 нельзя!
Формат числа в БД2 "целое число"

Знает ли кто, при помощи какой встроенной функции mssql или может быть какого-то алгоритма, можно уменьшить число из БД1 с возможностью его дальнейшего восстановления?
29 апр 14, 16:07    [15953193]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Exproment
Member

Откуда:
Сообщений: 416
Vladimir _ _, безумие-то какое :) Ну нельзя увеличить длину поля (что мешает ?) - добавьте дополнительное поле. А вообще как вы себе представляете вид чисел из БД1 в БД2 ? Как они должны хранится по вашему мнению ?
29 апр 14, 16:11    [15953236]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Vladimir _ _
Member

Откуда:
Сообщений: 14
пустые ответы, прошу оставить при себе

а для примера:
есть число 335022653948, его нужно поместить в поле длиной 10 символов (это безоговорочное условие)
если бы поле, в которое мы его должны поместить было строковым, мы просто преобразовали бы его в hex 4E00E801FC
29 апр 14, 16:26    [15953383]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Vladimir _ _
Формат числа в БД2 "целое число"
Вы ошиблись форумом, в MS SQL нет такого типа данных.
Может вы имеете ввиду Int или Numeric(10,0)? Или у вас CONSTRAINT висит?

Уточните, ибо решать абстрактные задачи не по теме - это противоречит правилам форума.
29 апр 14, 16:32    [15953434]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Целые числа от DECIMAL(10,0) до DECIMAL(19,0) занимают 9 байт.
29 апр 14, 16:40    [15953506]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Vladimir _ _
Member

Откуда:
Сообщений: 14
Mnior
Vladimir _ _
Формат числа в БД2 "целое число"
Вы ошиблись форумом, в MS SQL нет такого типа данных.
Может вы имеете ввиду Int или Numeric(10,0)? Или у вас CONSTRAINT висит?

Уточните, ибо решать абстрактные задачи не по теме - это противоречит правилам форума.


1. я не ошибся
2. Вам сильно важен тип данных поля? если в условии задано, что в этом поле лежат только целые числа в десятичной системе счисления, но если всё.. то int
29 апр 14, 16:41    [15953509]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Vladimir _ _
Дано:
1. В БД1 имеем таблицу в одном из полей, которой лежат целые числа длиной 11 и 12 разрядов
2. В БД2 есть таблица в одном из полей, которой лежат целые числа длиной 10 разрядов
Требуется:
Числа из БД1 переложить в БД2.

Увеличить длину числа в БД2 нельзя!
Формат числа в БД2 "целое число"

Знает ли кто, при помощи какой встроенной функции mssql или может быть какого-то алгоритма, можно уменьшить число из БД1 с возможностью его дальнейшего восстановления?


а повторы чисел в БД2 допустимы?
29 апр 14, 17:09    [15953777]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Vladimir _ _
Member

Откуда:
Сообщений: 14
Маслов Андрей
Vladimir _ _
Дано:
1. В БД1 имеем таблицу в одном из полей, которой лежат целые числа длиной 11 и 12 разрядов
2. В БД2 есть таблица в одном из полей, которой лежат целые числа длиной 10 разрядов
Требуется:
Числа из БД1 переложить в БД2.

Увеличить длину числа в БД2 нельзя!
Формат числа в БД2 "целое число"

Знает ли кто, при помощи какой встроенной функции mssql или может быть какого-то алгоритма, можно уменьшить число из БД1 с возможностью его дальнейшего восстановления?


а повторы чисел в БД2 допустимы?


нет, не допустимы (забыл уточнить в задаче)
29 апр 14, 17:10    [15953787]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
12 знаков Вы не засунете, а 11 можно при условии, что в исходных данных нет отрицательных чисел.
29 апр 14, 17:11    [15953789]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
По крайней мере 1 можно превратить в "-" :)
29 апр 14, 17:12    [15953798]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
Для int это не вариант, конечно.
29 апр 14, 17:13    [15953804]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Vladimir _ _
Маслов Андрей
пропущено...


а повторы чисел в БД2 допустимы?


нет, не допустимы (забыл уточнить в задаче)

тогда решения нет, так как закодировать без повторов не возможно, с учётом того, что вам нужен тип int
29 апр 14, 17:14    [15953810]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Маслов Андрей
Vladimir _ _
пропущено...


нет, не допустимы (забыл уточнить в задаче)

тогда решения нет, так как закодировать без повторов не возможно, с учётом того, что вам нужен тип int


А почему бы не использовать тип bigint или вообще строку, тогда возможностей больше
29 апр 14, 17:15    [15953821]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Vladimir _ _,

так у вас числа там лежат, или _строковое представление_ чисел (вы разницу понимаете, вообще)? про тип данных вас именно в этом ключе спрашивали.
29 апр 14, 17:16    [15953828]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
daw
Vladimir _ _,

так у вас числа там лежат, или _строковое представление_ чисел (вы разницу понимаете, вообще)? про тип данных вас именно в этом ключе спрашивали.

Судя по всему у него там тип int, а не строка.
29 апр 14, 17:18    [15953845]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Маслов Андрей
daw
Vladimir _ _,

так у вас числа там лежат, или _строковое представление_ чисел (вы разницу понимаете, вообще)? про тип данных вас именно в этом ключе спрашивали.

Судя по всему у него там тип int, а не строка.

Формат числа в БД2 "целое число"
29 апр 14, 17:18    [15953846]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
А отрицательные числа допустимы?
29 апр 14, 17:19    [15953858]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Vladimir _ _
Member

Откуда:
Сообщений: 14
Маслов Андрей
А отрицательные числа допустимы?

да допустимы
29 апр 14, 17:26    [15953931]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
Сложить все числа, в отдельный справочник, а в поле "В БД2 есть таблица в одном из полей, которой лежат целые числа длиной 10 разрядов" положить интовый идентификатор числа из справочника.
29 апр 14, 17:33    [15953992]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
Вообще, налицо явное непонимание матчасти.

Для хранения значения 335022653948 (или 1001110 00000000 11101000 00000001 11111100), понадобится пять байт, в то время как тип int - это четыре байта. Без потерь данных не впихнуть никак.
29 апр 14, 17:36    [15954032]     Ответить | Цитировать Сообщить модератору
 Re: сжатие чисел  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Vladimir _ _
Маслов Андрей
А отрицательные числа допустимы?

да допустимы

создай таблицу рядом с ключевым полем в 10 разрядов (int) и поле bigint в ней, добавляй данные в эту таблицу, а в DATA2 пиши ключ из этой таблицы.

Но всё равно количество возможных вариантов значений будет в диапазоне
int - -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
29 апр 14, 17:38    [15954046]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить