sql >> Databasteknik >  >> RDS >> Oracle

Hur väljer man rader med 4-byte UTF-8-tecken i Oracle DB?

Du kan använda UNISTR-funktionen ; tecknet 🠜 är kodpunkt U+2070E , som i UTF-16 är D841DF0E. Som dokumentationen noterar:

Vilket betyder att du kan representera det med:

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

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

Du kan sedan använda UNISTR för att konstruera ditt intervall:

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

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

Förutsatt att du vill utesluta alla tilläggstecken; du kan justera omfånget om du har ett smalare fokus.



  1. det mest effektiva sättet att lägga till index till stora mysql-tabeller

  2. PHP Mysql - Ta bort-knappen fortsätter att ta bort senaste raden

  3. Ta bort rader från flera tabeller i MySQL

  4. Fråga för att få de senaste konversationerna för användarens inkorg