Буквы с ударением и их базовая буква имеют одинаковое значение ascci - PullRequest
0 голосов
/ 21 февраля 2019

Я использую преобразование ascii для удаления из строки всех букв / символов, кроме az, AZ и 0-9.Но когда я пытаюсь сделать то же самое, я получаю буквы с акцентом.При указании CustomerName с 'āb' оно конвертируется в 'ab' Но мой ожидаемый результат - просто 'b'.Согласно моему пониманию, акцентированные ценности принимают значение ascii так же, как и их основу.Пожалуйста, помогите, если у вас есть идеи.Прикрепив мой код

CREATE FUNCTION dbo.RemoveSpecialChar (@s VARCHAR(256)) 
RETURNS VARCHAR(256)
WITH SCHEMABINDING
    BEGIN
        IF @s IS NULL
            RETURN NULL
        DECLARE @s2 VARCHAR(256) = '',
                @l INT = LEN(@s),
                @p INT = 1

        WHILE @p <= @l
            BEGIN
                DECLARE @c INT
                SET @c = ASCII(SUBSTRING(@s, @p, 1))
                IF @c BETWEEN 48 AND 57
                   OR  @c BETWEEN 65 AND 90
                   OR  @c BETWEEN 97 AND 122
                    SET @s2 = @s2 + CHAR(@c)
                SET @p = @p + 1
            END

        IF LEN(@s2) = 0
            RETURN NULL

        RETURN @s2
        end

SELECT  [dbo].[RemoveSpecialChar](CAST(Name AS nvarchar(255))) as CustomerName
from  Customers
...