Форматирование строк с помощью LISTAGG в Oracle. Экранирование одиночной кавычки ` ' `

Как я могу отформатировать вывод listagg в Oracle, чтобы вывести вывод (каждое поле в одинарной кавычке) как 'student1', 'student2', 'student3'.
Я просмотрел документацию и другие вопросы по listagg, но не могу найти много. SQL-запрос для объединения значений столбца из нескольких строк в Оракул

SELECT LISTAGG(student_name,',')  WITHIN GROUP (ORDER BY student_name)
from students

Спасибо


person krishnakant    schedule 15.01.2018    source источник


Ответы (2)


Вы можете использовать:

SELECT LISTAGG('''' || student_name || '''',',') 
       WITHIN GROUP (ORDER BY student_name)
FROM students;

или используя функцию ENQUOTE_LITERAL:

SELECT LISTAGG(DBMS_ASSERT.ENQUOTE_LITERAL(student_name),',') 
       WITHIN GROUP (ORDER BY student_name) AS r
FROM students;

демонстрация DBFiddle

person Lukasz Szozda    schedule 15.01.2018

Это должно сделать работу. Вам нужно избежать ' в запросе.

SELECT LISTAGG('''' || student_name || '''',', ') WITHIN GROUP (ORDER BY student_name)
FROM students
person clinomaniac    schedule 15.01.2018