Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie wählt man Zeilen mit 4-Byte-UTF-8-Zeichen in Oracle DB aus?

Sie können die UNISTR-Funktion verwenden; das 𠜎-Zeichen ist codepoint U+2070E , was in UTF-16 D841DF0E ist. Wie die Dokumentation feststellt:

Das heißt, Sie können es darstellen mit:

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

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

Sie können dann UNISTR verwenden, um Ihren Bereich zu erstellen:

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

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

Angenommen, Sie möchten alle ergänzenden Zeichen ausschließen; Sie können den Bereich anpassen, wenn Sie einen engeren Fokus haben.