使用Oracle中的LISTAGG进行字符串格式化。逃避单引号''`

问题描述 投票:1回答:2

如何格式化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

谢谢

sql oracle string-aggregation
2个回答
3
投票

你可以使用:

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


1
投票

这应该做的工作。你需要在查询中转义'

SELECT LISTAGG('''' || student_name || '''',', ') WITHIN GROUP (ORDER BY student_name)
FROM students
© www.soinside.com 2019 - 2024. All rights reserved.