Добрый день.
Написал вот такой алгоритм:
Всё работает, проблем нет. Но всё это делалось для одной переменной. Теперь необходимо обернуть в функцию и использовать в запросах, где будет присутствовать в среднем 10т. записей. Я подумал, что может работать медленно т.к. каждую запись придётся сканировать в цикле.
Вопрос: есть ли другой более быстрый способ через T-SQL?
Написал вот такой алгоритм:
CREATE PROCEDURE [SMS_CountSMSInMessage] @Message NVARCHAR(512), @Result INT = 0 OUTPUT AS SET NOCOUNT ON; SET @Result = 0 DECLARE @Position INT; DECLARE @Format INT SET @position = 1 SET @Format = 1 WHILE @position <= LEN(@Message) BEGIN -- Если код символа > 127 то русские символы. IF ASCII(SUBSTRING(@Message, @position, 1)) > 127 SET @Format = 2 -- Если формат определён заранее выходим из цикла. IF @Format = 2 BREAK SET @position = @position + 1 END;
Всё работает, проблем нет. Но всё это делалось для одной переменной. Теперь необходимо обернуть в функцию и использовать в запросах, где будет присутствовать в среднем 10т. записей. Я подумал, что может работать медленно т.к. каждую запись придётся сканировать в цикле.
Вопрос: есть ли другой более быстрый способ через T-SQL?