I am using ascii conversion to remove all letters/ characters other than a-z, A-Z and 0-9 from a string. But when I am trying the same, I am getting accented letters. While giving CustomerName with 'āb' its converted to 'ab' But my expected result is just 'b'. As per my understanding accented values are taking ascii value same as their base. Please help if you have any idea. Attaching my code
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