sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo seleccionar filas con caracteres UTF-8 de 4 bytes en Oracle DB?

Puede usar la función UNISTR ; el carácter 𠜎 es codepoint U+2070E , que en UTF-16 es D841DF0E. Como señala la documentación:

Lo que significa que puedes representarlo con:

select unistr('\D841\DF0E') from dual;

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

Luego puede usar UNISTR para construir su rango:

select REGEXP_REPLACE('asd𠜎aasd', 
  '[' 
  || UNISTR('\D800\DC00') 
  || '-' 
  || UNISTR('\DBFF\DFFF') 
  || ']', '') 
from dual;

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

Suponiendo que desea excluir todos los caracteres complementarios; puede ajustar el rango si tiene un enfoque más estrecho.