DUMP - это моя отправная точка при расследовании проблем с наборами символов.
select wmsys.wm_concat('êõôó'), dump(wmsys.wm_concat('êõôó'))
from dual connect by level < 3;
В моей базе данных (AL32UTF8, как показано запросом параметра NLS_CHARACTERSET из v $ nls_parameters), возвращается, как и ожидалось.1005 * Как отображается выбор простого userFirstName?
Я подозреваю, что значения получены из среды с несколькими наборами символов, но как-то трактуются как данные с одним набором символов.
Отредактировано, чтобы добавить:
Я могу воспроизвести это, используя следующее:
select * from v$nls_parameters
where parameter = 'NLS_NCHAR_CHARACTERSET';
AL16UTF16
create table t (v nvarchar2(3));
insert into t values ('a');
select dump(v) from t;
select wmsys.wm_concat(v), v, dump(v), dump(wmsys.wm_concat(v)) from t
group by v;
Чтобы исправить это, вы можете попробовать привести строку к стандартному VARCHAR2
select wmsys.wm_concat(cast(v as varchar2(3)))
from t
group by v;