部署ORACLE 12.01
单字节部署字符集:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET WE8MSWIN1252
多字节部署字符集:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8
我在两种环境下都有下表:
CREATE TABLE "DEPARTMENTS_JSON_NCLOB"
( "DEPARTMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
"DEPARTMENT_DATA" NCLOB NOT NULL ENABLE
);
请注意,我具有用于存储数据的NCLOB列,并且根据用于NCLOB列的字符集为NLS_NCHAR_CHARACTERSET,这在两种环境中都是相同的。
在两种环境下均插入以下内容:
Insert into DEPARTMENTS_JSON_NCLOB (DEPARTMENT_ID,DEPARTMENT_DATA) values (140,'{"department_list":[{"Deptname":"DEPT-A", "value" : "məharaːʂʈrə"}]}');
Insert into DEPARTMENTS_JSON_NCLOB (DEPARTMENT_ID,DEPARTMENT_DATA) values (2000,'{"department_list":[{"Deptname":"DEPT-A", "value" : "məharaːʂʈrə"}]}');
Insert into DEPARTMENTS_JSON_NCLOB (DEPARTMENT_ID,DEPARTMENT_DATA) values (2001,'छत्रपती Akshay â, ê, î, ô, û');
尝试在两种环境中搜索:
select * from departments_json_nclob where department_data like '%छत्रपती%';
select * from departments_json_nclob where department_data like '%məharaːʂʈrə%';
试图在两种环境中使用不同的多字节输入进行搜索,但是单字节结果没有行,但是多字节显示各自的结果。为什么?由于NCLOB引用了NLS_NCHAR_CHARACTERSET,这对于两种环境都是相同的
我的观察: 丢失单个字节中的实际字符-
选择c,length(c),lengthb(c) 从(选择子档,级别,1)c 从(选择'Akshayâ,ê,î,ô,ûÑüÁÉÍÓÚ's 从双) 按级别连接<=长度);
检查此-