在 Oracle 中使用 LISTAGG 进行字符串格式化。转义单引号 ` ' `

String formatting using LISTAGG in Oracle. Escaping single quote ` ' `

如何在 Oracle 中格式化 listagg 的输出以将输出(单引号中的每个字段)生成为 'student1', 'student2', 'student3'
我已经浏览了关于 listagg 的文档和其他问题,但找不到太多。 SQL Query to concatenate column values from multiple rows in Oracle

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

谢谢

您可以使用:

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 Demo

这应该可以完成工作。您需要在查询中转义 '

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