Я ничего не знаю об арабском, но насколько я вижу из кодовой страницы в Википедии , ваш сценарий в основном правильный, за исключением того, что , похоже, , некоторые арабские символы диапазон [\x80-\x9F]
, так что вы можете захотеть использовать более широкий диапазон ... кроме того, я не знаю, использует ли арабский язык то же пространство ASCII, что и английский, но в этом случае вы также захотите включить его; и, вероятно, другие контрольные символы в диапазоне [\x00-\x1F]
.
Лично я бы просто избегал «арабского эльсифа» и возвращал «арабский» в другом, так как в любом случае арабский матч будет совпадать с большей частью кодировки, и это не является убедительным доказательством того, что текст наверняка не английский или арабский.
Примерно так же, включая несколько английских символов в конце кодировки: (полностью не проверено)
create or replace function GET_LANGUAGE (v_value in varchar2)
return varchar2 as
begin
if (REGEXP_LIKE(v_value, '[\x00-\x80\x82-\x89\x8B\x8C\x91-\x97\x99\x9B\x9C\xF3-\xFC]+')) then
return 'ENGLISH';
else
return 'ARABIC';
end if;
end;