Попробуйте использовать UNICODE () вместо ASCII (), потому что вы имеете дело с символами Unicode.
ASCII ():
Возвращает значение кода ASCII для
крайний левый персонаж персонажа
выражение.
UNICODE ()
Возвращает целочисленное значение, как определено
по стандарту Unicode, для первого
символ входного выражения.
Обратите внимание, чтобы запустить тест:
-- Returns 63:
select ASCII('ش')
-- Still returns 63:
select UNICODE('ش')
-- Returns 1588. Note the N before the character, to indicate it's a unicode string
select UNICODE(N'ش')
Обновление:
Несколько вещей, которые нужно изменить:
declare @thisChar char(1);
должно быть:
declare @thisChar nchar(1);
Затем, когда вы проверяете этот символ, просто выполните прямой обмен с использованием ASCII () на UNICODE ()