Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách phát hiện ký tự UTF8 4byte trong Oracle

Có thể bạn đã làm sai điều gì đó với việc xây dựng regexp:Có một ví dụ ngắn.

-- 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')||']')

Nó hoạt động trên Oracle 11.2.0.4 và 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. chọn NLS_LANG cho Oracle

  2. Lỗi Oracle.Dataaccess ORA-06502:PL / SQL:lỗi số hoặc giá trị:bộ đệm chuỗi ký tự quá nhỏ

  3. thêm tháng vào SQL ngày tháng

  4. Truy vấn đệ quy trong Oracle

  5. Có cách nào để truy cập các thủ tục plsql riêng tư cho mục đích thử nghiệm không?