Oracle
 sql >> Database >  >> RDS >> Oracle

Come selezionare righe con caratteri UTF-8 a 4 byte in Oracle DB?

Puoi utilizzare la funzione UNISTR ; il carattere 𠜎 è codepoint U+2070E , che in UTF-16 è D841DF0E. Come osserva la documentazione:

Ciò significa che puoi rappresentarlo con:

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

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

Puoi quindi utilizzare UNISTR per costruire il tuo intervallo:

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

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

Supponendo che tu voglia escludere tutti i caratteri supplementari; puoi regolare la portata se hai una messa a fuoco più ristretta.