Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como selecionar linhas com caracteres UTF-8 de 4 bytes no Oracle DB?


Você pode usar a função UNISTR ; o caractere 𠜎 é codepoint U+2070E , que em UTF-16 é D841DF0E. Como observa a documentação:

O que significa que você pode representá-lo com:
select unistr('\D841\DF0E') from dual;

UNISTR('\D841\DF0E')
--------------------
𠜎

Você pode então usar UNISTR para construir seu intervalo:
select REGEXP_REPLACE('asd𠜎aasd', 
  '[' 
  || UNISTR('\D800\DC00') 
  || '-' 
  || UNISTR('\DBFF\DFFF') 
  || ']', '') 
from dual;

REGEXP_REPLACE('ASD𠜎AASD','['||UNISTR('\D800\DC00')||'-'||UNISTR('\DBFF\DFFF')||']','')
----------------------------------------------------------------------------------------
asdaasd

Supondo que você deseja excluir todos os caracteres suplementares; você pode ajustar o alcance se tiver um foco mais estreito.