Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wybrać wiersze z 4-bajtowymi znakami UTF-8 w Oracle DB?

Możesz użyć funkcji UNISTR ; znak 𠜎 to codepoint U+2070E , który w UTF-16 to D841DF0E. Jak zauważa dokumentacja:

Co oznacza, że ​​możesz to przedstawić za pomocą:

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

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

Następnie możesz użyć UNISTR do skonstruowania swojego zakresu:

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

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

Zakładając, że chcesz wykluczyć wszystkie dodatkowe znaki; możesz dostosować zakres, jeśli masz węższy zakres.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sformatować i posortować datę w Oracle?

  2. cx_Oracle — Nie udało się załadować biblioteki DLL:%1 nie jest prawidłową aplikacją Win32. pyton

  3. Ustawienie NLS_NUMERIC_CHARACTERS dla dziesiętnych

  4. Czy operator IN może używać symboli wieloznacznych LIKE (%) w Oracle?

  5. Jak uzyskać nazwę klasy sterownika (nie nazwę sterownika) z połączenia jdbc?