2013-06-15 3 views

답변

2

형식 모델에서 format model modifier, fm을 사용하지 않아서 작동하지 않습니다. 형식 모델 수정자를 사용하지 않으므로 요일에는 9 문자 (가장 긴 수요일 길이)의 공백이 오른쪽으로 채워집니다. 이것은 차례로 평등에 대한 테스트가 잘못되었음을 의미합니다. 당신은 문제 및 솔루션 모두의 시연이 쿼리를 실행할 수 있습니다

to_char(date1, 'fmDay') 

:이 형식 모델 수정을 사용하여 해결하기 위해

with a_week as (
    select sysdate - level as dy 
    from dual 
connect by level <= 7) 
select dy 
    , to_char(dy, 'Day') 
    , length(to_char(dy, 'Day')) 
    , to_char(dy, 'fmDay') 
    , length(to_char(dy, 'fmDay')) 
    from a_week 

는 참조 this SQL Fiddle

나는 귀찮게하지 않을 것이라고 말한 바 있습니다. 왜 하루 종일 타이핑해야합니까? 대신 DY 형식 모델을 사용

if to_char(date1,'DY') = 'SUN' or to_char(date2,'DY') = 'SUN' then 
    ... 

이 세 가지 자 항상이다.

디버깅에 대한 간단한 참고 사항. 첫 번째 IF 문이 제대로 실행되지 않는 경우 다음 단계를 따르십시오.

  1. IF 문에서 테스트를 추출하여 SELECT에 넣습니다. 평등성을 테스트하고있는 두 가지가 동일한 지 확인하십시오.
  2. 일단 알게되면 형식 모델이 문제라는 것을 알지 못합니다. 형식 모델이라는 것을 알지 못하지만 TO_CHAR()에서이 모델을 사용하고 있으므로 문서를 참조하십시오.
  3. TO_CHAR() 문서는 형식 모델 수정자를 찾을 수있는 형식 모델로 안내합니다.