Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara mendeteksi karakter UTF8 4byte di Oracle

Mungkin Anda melakukan kesalahan dengan membangun regexp:Ada contoh singkat.

-- create table: 
create table tmp_a as 
select unistr('\D841\DF0E') col from dual;
insert into tmp_a(col)
values(UNISTR('\D800\DC00'));
insert into tmp_a(col)
values(UNISTR('\D800\DC01'));
insert into tmp_a(col)
values(UNISTR('\D803\DC03'));
insert into tmp_a(col)
values(UNISTR('\041f'));
insert into tmp_a(col)
values('a');
insert into tmp_a(col)
values('b');


-- then check. There is should be 7 rows and only 4 should pass then "check"
select col, dump(col) , regexp_instr(col, '['||UNISTR('\F090\8080')||'-'||UNISTR('\F48F\BFBF')||']') as check from  tmp_a ;


-- finaly we could build next query with regexp_like as in your example 
select count(*) 
  from tmp_a 
 where regexp_like(col, '['||UNISTR('\F090\8080')||'-'||UNISTR('\F48F\BFBF')||']')

Ini bekerja pada Oracle 11.2.0.4 dan 12.2.0.1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa melihat rencana eksekusi SQL di Oracle?

  2. Cara membuat kursor di dalam badan prosedur di plsql

  3. Bagaimana cara mengirim SMS melalui oracle 11g? klien adalah katak dan di India saya harus mengirim sms

  4. Bisakah SQL*Plus membaca variabel lingkungan dari mesin yang dijalankannya?

  5. Melewati daftar yang ditentukan pengguna dari hibernasi ke prosedur tersimpan Oracle