Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment sélectionner des lignes avec des caractères UTF-8 à 4 octets dans Oracle DB ?

Vous pouvez utiliser la fonction UNISTR ; le caractère 𠜎 est codepoint U+2070E , qui en UTF-16 est D841DF0E. Comme le note la documentation :

Ce qui signifie que vous pouvez le représenter avec :

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

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

Vous pouvez ensuite utiliser UNISTR pour construire votre gamme :

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

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

En supposant que vous souhaitiez exclure tous les caractères supplémentaires ; vous pouvez ajuster la plage si vous avez une mise au point plus étroite.