0

日付エラーを含むテーブルがあります。

エラーは次のようなタイプミスです:2008年8月1日ではなく208年8月1日。私がやろうとしているのは、正しい情報を使用してそのテーブルからビューを作成することです。

これを試しましたが、ORA-01858が表示されます。数字が予期されていた場所に数字以外の文字が見つかりました

CREATE OR REPLACE VIEW IC_STRUCTURE("DATE_DE_CONSTRUCTION") AS
SELECT 
  CASE
    WHEN DATE_DE_CONSTRUCTION = '01-AUG-208'
    THEN TO_DATE('01-AUG-2008')
    ELSE DATE_DE_CONSTRUCTION
  END AS DATE_DE_CONSTRUCTION
FROM structure_souterraine;

残念ながら、そのテーブルはエラーの原因である別のデータベースによって毎月更新されるため、エラーを正しい値で単純に更新することはできません。私は毎月それを修正しなければならないでしょう。

私のクエリの何が問題になっていますか?別の回避策はありますか?

4

2 に答える 2

2

私はあなたが欲しいと思うでしょう:

CREATE OR REPLACE VIEW IC_STRUCTURE("DATE_DE_CONSTRUCTION") AS
SELECT 
  CASE
    WHEN DATE_DE_CONSTRUCTION = '01-AUG-208'
    THEN TO_DATE('01-AUG-2008','DD-MON-YYYY')
    ELSE TO_DATE(DATE_DE_CONSTRUCTION,'DD-MON-YYYY')
  END AS DATE_DE_CONSTRUCTION
FROM structure_souterraine;

誤った値を更新し、以下にチェック制約を設定します。

TO_DATE(DATE_DE_CONSTRUCTION,'DD-MON-YYYY') > date '1900-01-01'

...しかし、より良い修正のようです。

于 2013-03-27T13:16:16.233 に答える
0
WHEN DATE_DE_CONSTRUCTION = '01-AUG-208' -- Date or char?
THEN TO_DATE('01-AUG-2008') -- this is a date
ELSE DATE_DE_CONSTRUCTION   -- must be date datatype. Your DATE_DE_CONSTRUCTION most likely char. Convert it to date.
于 2013-03-27T12:59:55.560 に答える