powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование чисел
13 сообщений из 13, страница 1 из 1
Преобразование чисел
    #39779603
Korai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с числами:

id(bigint)number(int)720575940437125771 1441151880816405132 2161727821195684493-92233720368489911671286773695314547721281350 33093947596813281935631277

Помогите написать функцию для получения числа в поле id из числа в поле number.
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779634
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студент?

Ну... линейную интерполяцию замути.
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779638
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Студент?

Ну... линейную интерполяцию замути.
ну точно не линейная
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779659
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @t table (id bigint, number int)
insert into @t values
(72057594043712577,	1),
(144115188081640513,	2),
(216172782119568449,	3),
(-9223372036848991167,	128),
(6773695314547721281,	350),
(3309394759681328193,	5631277)

--	********************************************************
;with cte as (
	select 
		*
		,cast(id as varbinary) as xz 
		,cast(number as varbinary) as xz1 
		,master.sys.fn_varbintohexstr(cast(reverse(left(cast(cast(id as varbinary) as varchar),4))as varbinary)) as xz_txt 
	from @t
)
select 
	* 
	,id_from_xz_txt = cast(convert(xml,'').value('xs:hexBinary(substring(sql:column("xz_txt"),3))','binary(4)') as int)
from cte


idnumberxzxz1xz_txt id_from_xz_txt 7205759404371257710x01000000005844410x000000010x00000001114411518808164051320x02000000005844410x000000020x00000002221617278211956844930x03000000005844410x000000030x000000033-92233720368489911671280x80000000005844410x000000800x0000008012867736953145477212813500x5E010000005844410x0000015E0x0000015e350330939475968132819356312770x2DED5500005844410x0055ED2D0x0055ed2d5631277
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779669
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,

а так нельзя?
Код: sql
1.
CAST(CAST(number as varbinary) as int) 
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779680
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKcourt,

а так нельзя?
Код: sql
1.
CAST(CAST(number as varbinary) as int) 

что это ?
Получение number путём "двойной перегонки" через cast из того же number ? :)

-------------------
авторПомогите написать функцию для получения числа в поле id из числа в поле number.
Я, кстате, ТС-а неправильно понял ...
Ему нужен id из number, а я сделал наоборот : number из id ...
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779688
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,

Код: sql
1.
CAST(CAST(convert(varbinary,reverse(convert(varbinary,number))) + 0x00584441 as varbinary) as bigint)
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779698
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtTaPaKcourt,

а так нельзя?
Код: sql
1.
CAST(CAST(number as varbinary) as int) 

что это ?
Получение number путём "двойной перегонки" через cast из того же number ? :)

то мне сразу так показалось что вы это и сделали :)
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779715
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKaleks222Студент?

Ну... линейную интерполяцию замути.
ну точно не линейная

Кубический сплайн ему не по зубам.
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779740
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KoraiЕсть таблица с числами:

id(bigint)number(int)720575940437125771 1441151880816405132 2161727821195684493-92233720368489911671286773695314547721281350 33093947596813281935631277

Помогите написать функцию для получения числа в поле id из числа в поле number.

Студент, даю подсказку:

Код: sql
1.
2.
3.
4.
5.
select 
  cast(72057594043712577 as bigint)
| cast(144115188081640513 as bigint)

-->216172782119568449



но дальше думай сам.
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779748
Korai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKcourt,

Код: sql
1.
CAST(CAST(convert(varbinary,reverse(convert(varbinary,number))) + 0x00584441 as varbinary) as bigint)



Это то что нужно. Получилось проще чем я думал. Не совсем была понятна логика преобразования.

Спасибо всем кто ответил, отдельное спасибо TaPaK.
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779749
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korai,

тут спасибо court, до него я вообще не понимал о чём это :)

и отдельное спасибо Alexander Us за здоровый смех, который продлевает жизнь
...
Рейтинг: 0 / 0
Преобразование чисел
    #39779790
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK и отдельное спасибо Alexander Us за здоровый смех, который продлевает жизнь
Всегда пожалуйста.
Вы бы рассказали, что смешного, остальные бы тоже посмеялись.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование чисел
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]