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

Откуда: Екатеринбург
Сообщений: 310
Добрый день.

Есть таблица. Пара [id1] и [id2] уникальна
CREATE TABLE [Data2Ids](
[id1] [int] NOT NULL,
[id2] [int] NOT NULL,
[Name] [varchar(50)] NOT NULL
)
Нужно на основании этой таблицы создать контент для таблицы
CREATE TABLE [Data1Id](
[id] [bigint] NOT NULL,
[Name] [varchar(50)] NOT NULL
)

Я знаю, что можно использовать join или ранжирующие функции например ROW_NUMBER(). Но наверняка же есть способ просто преобразовать два int в один bigint, так что бы сохранилась уникальность.
27 апр 12, 16:00    [12480762]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Как-то так:

declare 
    @i1     int = 99
    , @i2   int = 95

declare
    @b      bigint  = @i1 * power( cast(2 as bigint), 31 ) + @i2 -- power( cast(2 as bigint), 31 )  - это константа, если что
    
select @i1, @i2, @b    
27 апр 12, 16:12    [12480896]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
.Anatoly.,

либо
declare @b bigint = cast(@a as varbinary) + cast(@b as varbinary)
27 апр 12, 16:15    [12480920]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
.Anatoly.
Member

Откуда: Екатеринбург
Сообщений: 310
Гавриленко Сергей Алексеевич, спасибо!
Примерно это и было нужно! Сейчас буду проверять
27 апр 12, 16:15    [12480921]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
32 степень, не 31.
27 апр 12, 16:15    [12480924]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Shakill, в именах опечатка, но суть понятна
27 апр 12, 16:16    [12480934]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Кстати, вариант с умножением падает на двух крайних отрицательных значениях int, в отличие от того, что с varbinary. В общем, я за varbinary.
27 апр 12, 16:19    [12480983]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Гавриленко Сергей Алексеевич
Кстати, вариант с умножением падает на двух крайних отрицательных значениях int, в отличие от того, что с varbinary. В общем, я за varbinary.
Не понимаю, уникальность слагаемых гарантирует уникальность суммы, да?
27 апр 12, 16:21    [12480997]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
iap
Гавриленко Сергей Алексеевич
Кстати, вариант с умножением падает на двух крайних отрицательных значениях int, в отличие от того, что с varbinary. В общем, я за varbinary.
Не понимаю, уникальность слагаемых гарантирует уникальность суммы, да?
Там не просто слагаемые, как бы. Там одно слагаемое сдвинуто на 32 бита влево.
27 апр 12, 16:22    [12481008]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
Гавриленко Сергей Алексеевич
Кстати, вариант с умножением падает на двух крайних отрицательных значениях int, в отличие от того, что с varbinary. В общем, я за varbinary.
Не понимаю, уникальность слагаемых гарантирует уникальность суммы, да?
Глупость сморозил! Там же VARBINARY!
27 апр 12, 16:22    [12481010]     Ответить | Цитировать Сообщить модератору
 Re: Уникальны bigint из уникальной пары int'ов  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Но лучше, всё-таки, два intа хранить в двух разных полях
27 апр 12, 16:23    [12481031]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить