Поиск в столбце Oracle NCLOB в однобайтовой среде Oracle

Развертывание 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, который одинаков для обеих сред

Мои наблюдения: потеря реальных символов в одном байте -

select c, length(c), lengthb(c) from (select substr(s, level, 1) c from (select 'छत्रपती Akshay â, ê, î, ô, û Ñ ü Á É Í Ó Ú' s из двойного) соединить по уровню <= length(s));

Проверь это --

0 ответов

Другие вопросы по тегам