如何在oracle pl sql中添加空格

如何在oracle pl sql中添加空格,sql,oracle,plsql,oracle-sqldeveloper,crystal-reports-2008,Sql,Oracle,Plsql,Oracle Sqldeveloper,Crystal Reports 2008,我的包中有一部分代码,可以通过crystal reports访问。。。每当我导出数据时,它不会给我Elseen上的10个空格,当记录没有假日日期时,用单引号括起来。我哪里出错了?使用rpad函数 SELECT lpad(nvl(substr(to_char(nvl(edt.leave,'''')),1,10),'''') || nvl(decode(leave_time,null,'''', decode(edt.leave_time,''P'',''-PM'',''-AM'')),''''

我的包中有一部分代码,可以通过crystal reports访问。。。每当我导出数据时,它不会给我Elseen上的10个空格,当记录没有假日日期时,用单引号括起来。我哪里出错了?

使用rpad函数

 SELECT lpad(nvl(substr(to_char(nvl(edt.leave,'''')),1,10),'''') || nvl(decode(leave_time,null,'''',
 decode(edt.leave_time,''P'',''-PM'',''-AM'')),''''),10,'' '') LeaveType,
 CASE WHEN substr(to_char(rh.holiday_date,''dd/MM/yyyy''),1,10) IS NOT NULL THEN
      substr(to_char(rh.holiday_date,''dd/MM/yyyy''),1,10)
      ELSE
      ''          ''
      END HolidayDate, FROM TABLE

如果您使用的是crystal reports,请不要操纵查询中的所有内容,请尝试以下操作:

像这样更改查询。。。在crystal reports中,在查询和操作中使用date列代替date上的case语句

rpad(' ',9)
现在,在crystal reports中,采用公式@Date并编写以下代码:

 SELECT lpad(nvl(substr(to_char(nvl(edt.leave,'''')),1,10),'''') || nvl(decode(leave_time,null,'''',
 decode(edt.leave_time,''P'',''-PM'',''-AM'')),''''),10,'' '') LeaveType,
 rh.holiday_date FROM TABLE

现在运行并导出报告

如果substrto_charrh.holiday_date,dd/MM/yyyy,1,10不为空,那么substrto_charrh.holiday_date,dd/MM/yyyy,1,10 ELSE rpad'',9 END HolidayDate-像这样?是的,这就是我的意思,它可能是一个基督报告问题或功能,我忍不住要尝试rpad'-',9,“-”看看它是否进入您的Elsey,您可以由此得出结论,您的问题在crystal reports中,而不是SQL中。我帮不了你,那确实会产生空间,所以其他的东西可能会剥离它们。它是不是把左边的填充物保留在leveType上?不过有几张便条;首先,您可能希望查看,这样就不必手动转义单引号,从而使其更可读,更易于独立运行。其次,空字符串与Oracle中的null相同,因此或示例nvledt.leave无法实现任何功能。你可以简化一下。
if IsNull(Cdate(rh.holiday_date))
then "          " //Adding 10 spaces
else Cdate(rh.holiday_date)