-1

特定の日付が週の特定の日にある場合、PLSQLのif条件に入ろうとしています。

DECLARE
  v_gebDatum    CONSTANT     DATE                 := to_date('21-01-1995', 'dd-MM-yyyy');
  v_mathDatum                DATE                 := v_gebDatum;
  v_huidigeDag               VARCHAR2(20);

  v_teller                   number   := 0;
BEGIN
  WHILE to_char(v_mathDatum, 'yyyy') < to_char(sysdate, 'yyyy')
  LOOP
    v_mathDatum := add_months(v_mathDatum, 12);
    v_huidigeDag := to_char(v_mathDatum, 'DAY');
    dbms_output.put_line(v_huidigeDag);
    IF v_huidigeDag IN('ZATERDAG', 'ZONDAG')
    THEN
      dbms_output.put_line(v_mathDatum);
    END IF;
  END LOOP;
END;

問題は、これを機能させることができないことです。v_huidigeDag を印刷すると、印刷された行の一部に「ZATERDAG」と「ZONDAG」の値が明確に含まれています。

なんらかの理由で、プログラムがスペースを追加した曜日名の値を出力したようです。私のロケールでは、最長の曜日名 (「DONDERSDAG」) の文字の長さが必要だと思います。そして、それよりも文字数が少ないものはすべて、スペースを追加します。したがって、zaterdag は = 'ZATERDAG ' になり、zondag は = 'ZONDAG ' になります。今は動いていますが、誰かがこれを防ぐ簡単な方法を知っていますか?

4

1 に答える 1