Использование listagg с польскими символами

У меня небольшая проблема с функцией listagg. Я хочу использовать его для объединения строк в одну строку с запятой в качестве разделителя. Мне удалось сделать это с помощью этого:

SELECT LISTAGG(U.name,', ') 
       WITHIN GROUP(ORDER BY NLSSORT(U.name,'NLS_SORT=polish'))
  FROM users U
  WHERE(U.birth_date BETWEEN :date1 AND :date2);

Проблема в том, что польские символы, такие как 'ą', 'ę' и т. д., отображаются в результате некорректно. Как я могу это исправить?

Польские символы отображаются неправильно в SQL Developer; например, у меня есть пользователи «Grzegorz Brzęcki-Dębina» ​​и «Paweł Kukiz», а на выходе я получаю «Grzegorz-Brz*cki-D*bina, Pawe* Kukiz».

select name from users 

Отображает правильно. Столбцы NVARCHAR2.

Чувак, ты гений :) Эта ссылка очень помогла. Все, что мне нужно было:

SELECT LISTAGG(CAST(U.name AS VARCHAR2(10)),', ') 
       WITHIN GROUP(ORDER BY NLSSORT(U.name,'NLS_SORT=polish'))
  FROM users U
  WHERE(U.birth_date BETWEEN :date1 AND :date2);

Спасибо :)


person Marek Nijaki    schedule 17.03.2016    source источник
comment
Не правильно отображаются где? С некоторыми фиктивными данными это, кажется, работает нормально, в SQL Developer как скрипт или оператор. Можете ли вы добавить некоторые примеры данных и то, что вы в настоящее время видите и ожидаете увидеть для этих данных? (Вы имеете в виду, что символы не отображаются или что порядок не такой, как вы ожидаете?)   -  person Alex Poole    schedule 17.03.2016
comment
Но select name from users правильно отображает их в SQL Developer? Это кажется странным. Какую версию вы используете и какую кодировку вы установили; и, я полагаю, это столбцы varchar2 или nvarchar2, и какая у вас база данных и национальные наборы символов?   -  person Alex Poole    schedule 17.03.2016
comment
Может эта ветка поможет? community.oracle.com/thread/2453760?start=0&tstart=0 Кажется, они предлагают обходной путь?   -  person Ditto    schedule 17.03.2016
comment
Похоже, это может быть вариант этой проблемы. Что такое NLS_NCHAR_CHARACTERSET? Приведение может работать, но вам может понадобиться использовать опцию преобразования; зависит от того, могут ли символы быть преобразованы ... (отредактировать) подход RAW в потоке, на который ссылается Ditto, может работать лучше. Я не думаю, что смогу легко воспроизвести это в своей среде или протестировать какие-либо обходные пути.   -  person Alex Poole    schedule 17.03.2016