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

Откуда:
Сообщений: 42
Добрый вечер!
Пытаюсь разобраться, как работает запрос для подсчета суммы всех чисел в строке.
Ветка форума https://www.sql.ru/forum/657640/summa-cifr-chisla

Более конкретно, запрос:

declare @n bigint = 9223372036854775807

select @n, sum(convert(tinyint,substring(convert(varchar(19) , @n) , v.number, 1)))
	from master..spt_values  v
	where v.type = 'p'
	and v.number between 1 and len(@n)



Почему используется число 9223372036854775807? Где об этом можно прочитать или на каком сайте разбирается этот пример?

Заранее благодарю!

Сообщение было отредактировано: 16 ноя 17, 01:09
15 ноя 17, 23:30    [20958251]     Ответить | Цитировать Сообщить модератору
 Re: Как работает данный запрос.  [new]
VinniL
Member

Откуда:
Сообщений: 42
Разобрался.
1. substring - берем каждое число по порядку и суммируем

2.select v.number
from master..spt_values v
where v.type = 'p'
and v.number between 1 and len(@n)

это порядок чисел от 1 до количества цифр в записи (len(@n))
16 ноя 17, 01:11    [20958332]     Ответить | Цитировать Сообщить модератору
 Re: Как работает данный запрос.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
Число 9223372036854775807 используется потому, что кому-то захотелось подсчитать сумму всех цифр в числе 9223372036854775807.
16 ноя 17, 01:12    [20958334]     Ответить | Цитировать Сообщить модератору
 Re: Как работает данный запрос.  [new]
Eleanor
Member

Откуда:
Сообщений: 2884
VinniL
Почему используется число 9223372036854775807?

Потому что автору примера захотелось использовать широко известное число
bigint
от -2^63 (-9 223 372 036 854 775 808) до 2^63-1 (9 223 372 036 854 775 807)
16 ноя 17, 01:46    [20958345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить