终止字符串

时间:2017-07-24 13:28:20

标签: string oracle

我需要创建以下字符串;

 'A-NUPHAT','AMIRA','AMNAD','ANAT','ANUCHAT',

但没有最后一个逗号:

这是我的疑问:

select listagg(  ''''  ||   empName||'''' ||    ','   ) within group (order by empName)
  from   ( select  distinct   T4.Rep_Emp_Name   as   empName
  from YAN_TASKS  t0
  inner join   YAN_PLATES      t1
  on     t0.firm_code = T1.Firm_Code
  and T0.Plate_Code=  T1.Plate_Code
  inner join  Rep_Emp_Names  t2
  on T1.Firm_Code = T2.Firm_Code
  and T1.Rep_Emp_Code=t2.REP_EMP_CODE
  inner join YAN_EMP_TASKS_PLAN   t3
  on t0.firm_code=t3.firm_code
  and T0.Task_Doc_Nbr = T3.Task_Doc_Nbr
  inner join Rep_Emp_Names t4
  on t4.firm_code = t3.firm_code
  and t4.Rep_Emp_Code=t3.Rep_Emp_Code)   )

如何在不获取最后一个逗号的情况下重写查询?

1 个答案:

答案 0 :(得分:2)

我认为问题在于您将逗号连接到您的值字符串。您应该将逗号指定为分隔符参数:listagg()足够聪明,知道我们不需要尾随逗号:

 listagg(''''||empName||'''' , ',') 
         ^                     ^
         aggregation arg       delimiter arg 

默认分隔符是null,所以如果我们不指定参数,那么Oracle只需运行一个完整的分配器:)。