Сбросить переменную, в которой хранится количество повторений запроса до 1, когда число достигает определенного числа? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть переменная, в которой хранится количество выполнений запроса, но она имеет ограничение длины в 3 символа, которое я не могу изменить. Таким образом, как только значение Count достигнет 999, я предполагаю, что логика потерпит неудачу.

SET @QueryCount = (
    SELECT COUNT(1) FROM dbo.Records WHERE QueryName = @QueryName
);

В настоящее время у меня нет логики для учета количества, которое превышает 3 символа, и ожидается, что переменная будетсбросить счетчик 1, как только он достигнет 999.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Или просто:

SELECT @value % 1000;

0 голосов
/ 04 октября 2019

Вы можете попробовать сделать целочисленное деление:

SET @QueryCount = (
    SELECT COUNT(1) - COUNT(1) / 1000 * 1000
    FROM dbo.Records 
    WHERE QueryName = @QueryName
);

Это гарантирует, что значение будет принадлежать диапазону 0..999. Когда значение достигает 1000, оно сбрасывается на 0.

Демонстрация арифметической логики :

DECLARE @value int = 999
SELECT @value - @value / 1000 * 1000

Yieds:999

DECLARE @value int = 1000
SELECT @value - @value / 1000 * 1000

Выход: 0

DECLARE @value int = 3525
SELECT @value - @value / 1000 * 1000

Выход: 525

...