Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Как выяснить имеется ли в переменной NVARCHAR хотя бы одна русская буква?

$
0
0
Добрый день.

Написал вот такой алгоритм:

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?

Viewing all articles
Browse latest Browse all 7251

Trending Articles