Я использую преобразование 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