0
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 ... всякий раз, когда я экспортирую данные, он не дает мне 10 пробелов на моем ELSE (вложенные одинарными кавычками), когда у записи нет даты holiday_Date. Где я ошибся?Как добавить пустое место в oracle pl sql

+0

Это делает генерировать пространства, так что-то еще (Кристалл, предположительно) является лишая их. Сохраняет ли левое заполнение в LeaveType? Хотя пару нот; во-первых, вы можете посмотреть на [альтернативный механизм цитирования] (http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00218), поэтому вам не нужно вручную одинарные кавычки, что делает его более читабельным и простым в автономном режиме. Во-вторых, пустая строка такая же, как и NULL в Oracle, поэтому или пример 'nvl (edt.leave, '')' ничего не добивается. Вы могли бы это упростить. –

ответ

1

Использование RPAD функции()

rpad(' ',9) 

http://www.techonthenet.com/oracle/functions/rpad.php

+0

CASE WHEN substr (to_char (rh.holiday_date, '' dd/MM/yyyy ''), 1,10) НЕ ЯВЛЯЕТСЯ НИКАКОЙ ТОЛЬКО substr (to_char (rh.holiday_date, '' dd/MM/yyyy '') 1,10) ELSE rpad ('', 9) END HolidayDate - вот так? – user2784400

+0

Да, вот что я имел в виду –

+0

Пробовал, к сожалению, он не работает. – user2784400

0

Не манипулируют все, что в запросе, если вы используете отчеты хрустальные вместо этого попытаться ниже:

Изменить запрос, как это ... вместо отчета о событии на дату берут столбец даты в запросе и манипулируют в отчетах о кристаллах.

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 

Теперь в отчетах хрустальных взять формулу @Date и писать код ниже:

if IsNull(Cdate(rh.holiday_date)) 
then "   " //Adding 10 spaces 
else Cdate(rh.holiday_date) 

Теперь запустите и экспортировать отчет