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

kri*_*ant 2 sql oracle string-aggregation

如何在 Oracle 中格式化 listagg 的输出以生成输出(单引号中的每个字段)为'student1', 'student2', 'student3'.
我已经浏览了有关 listagg 的文档和其他问题,但找不到太多。 用于连接 Oracle 中多行列值的 SQL 查询

SELECT LISTAGG(student_name,',')  WITHIN GROUP (ORDER BY student_name)
from students
Run Code Online (Sandbox Code Playgroud)

谢谢

Luk*_*zda 5

你可以使用:

SELECT LISTAGG('''' || student_name || '''',',') 
       WITHIN GROUP (ORDER BY student_name)
FROM students;
Run Code Online (Sandbox Code Playgroud)

或使用ENQUOTE_LITERAL功能:

SELECT LISTAGG(DBMS_ASSERT.ENQUOTE_LITERAL(student_name),',') 
       WITHIN GROUP (ORDER BY student_name) AS r
FROM students;
Run Code Online (Sandbox Code Playgroud)

DBFiddle 演示