При попытке удалить все акценты из строки в Oracle, используя методы, описанные в этом ответе stackoverflow: как заменить акцентированную букву в столбце varchar2 в oracle Я получаю смешанные результаты.
select CONVERT('JUAN ROMÄN', 'US7ASCII') from dual;
Возвращает исходную строку, но заменяет символы, например, на знак вопроса (вероятно, из-за выбранной кодировки - тесты с разными кодировками привели к разным результатам).
Используя следующую технику:
select utl_raw.cast_to_varchar2(nlssort(NAME_USER, 'nls_sort=binary_ai')) from YOUR_TABLE;
Возвращает полную строку, но также помещает значение NUL в конец строки.
Есть ли набор символов, который можно использовать с испанскими акцентами для получения правильного результата (оригиналстрока с удалением разных акцентов);Есть ли способ избежать значения NUL в технике utl_raw.cast_to_varchar2?
Основываясь на комментариях, замена символа (0), кажется, удаляет значение NUL.Например,
select
upper(utl_raw.cast_to_varchar2((nlssort('this is áà ñew test','nls_sort=binary_ai')))) as test,
replace(upper(utl_raw.cast_to_varchar2((nlssort('this is áà ñew test','nls_sort=binary_ai')))),chr(0),'') as test2
from dual;
Если возможно, я хотел бы, однако, иметь более «простое / простое» решение.
Заранее спасибо.