sql >> Databáze >  >> RDS >> Oracle

Jak vybrat řádky se 4bajtovými znaky UTF-8 v Oracle DB?

Můžete použít funkci UNISTR ; znak 🠜 je codepoint U+2070E , což je v UTF-16 D841DF0E. Jak uvádí dokumentace:

Což znamená, že jej můžete reprezentovat pomocí:

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

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

Potom můžete použít UNISTR k vytvoření svého rozsahu:

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

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

Za předpokladu, že chcete vyloučit všechny doplňkové znaky; můžete upravit rozsah, pokud máte užší ohnisko.



  1. Jak Asin() funguje v PostgreSQL

  2. Zálohování MySQL s podmínkou WHERE

  3. Připojení k databázi Oracle

  4. Jak přepsat příkaz SELECT ... CROSS JOIN LATERAL ... pro starší verze PostgreSQL?