У меня небольшая проблема с функцией 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);
Спасибо :)
select name from users
правильно отображает их в SQL Developer? Это кажется странным. Какую версию вы используете и какую кодировку вы установили; и, я полагаю, это столбцы varchar2 или nvarchar2, и какая у вас база данных и национальные наборы символов? - person Alex Poole   schedule 17.03.2016