|
|
|
Работа с беззнаковыми двойными словами в T-SQL
|
|||
|---|---|---|---|
|
#18+
SQL Server 7 имеет тип данных int. Этот тип может хранить целое число до 2,147,483,647 включительно, так как старший бит (из 4 отпущенных int’у) используется под знак. Как поступить, если мне необходимо работать с большими целыми числами, но укладывающимися в 4 байта (иными словами, с без знаковыми)? Пробовал тип binary(4), но конструкция вида: Код: plaintext 1. 2. 3. 4. нежизнеспособна. Мне необходимо выполнять различные операции над числами, например, умножение, побитовое И, ИЛИ и т.п. Кстати, как реализовать сдвиг в право/лево на T-SQL? Какие есть варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2002, 12:51:46 |
|
||
|
Работа с беззнаковыми двойными словами в T-SQL
|
|||
|---|---|---|---|
|
#18+
Вот один из вариантов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2002, 15:19:52 |
|
||
|
Работа с беззнаковыми двойными словами в T-SQL
|
|||
|---|---|---|---|
|
#18+
al_r, Да, действительно можно привести все к делению и умножению на степень двойки... Я просто удивлен, что в T-SQL нет встроенной функции сдвига, думал, что просто не нашел... Благодарю Вас за ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2002, 17:14:52 |
|
||
|
Работа с беззнаковыми двойными словами в T-SQL
|
|||
|---|---|---|---|
|
#18+
Да, в общем, благодарить особо и не за что:) Кстати, знаковость или беззнаковость числа влияет только на операции сравнения, что достаточно легко обойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2002, 18:54:58 |
|
||
|
Работа с беззнаковыми двойными словами в T-SQL
|
|||
|---|---|---|---|
|
#18+
>> Кстати, знаковость или беззнаковость числа влияет только на операции сравнения, что достаточно легко обойти. Нельзя ли подробнее… Скажем, такой фрагмент: Код: plaintext 1. 2. 3. не будет работать, т.к. 2147483647*2 не входит в ‘область определения’ знаковых четырехбайтовых чисел. Я понимаю, что можно ‘мыслить’ отрицательные значения как положительные, как бы внося поправку. Но как в таком случае выполнять собственно расчеты (то же умножение)? Естественно, что если произведение получается больше размера (тех самых 4 байт), то необходимо отбросить старшую часть… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2002, 23:45:09 |
|
||
|
Работа с беззнаковыми двойными словами в T-SQL
|
|||
|---|---|---|---|
|
#18+
Виноват, был дурак, исправлюсь:)). Не учел, что ловится арифметическое переполнение. Это сильно портит дело. Варианты решения: 1. Операнды преобразовать в numeric(18,0), анализировать результат и генерить целое число. 2. Написать extended stored proc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2002, 14:14:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32033821&tid=1822145]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 360ms |

| 0 / 0 |
