非数字以外の文字が間違っているために失敗を挿入します
質問
hy
テーブル:
create table Players (PlayerNo number (4) not null, Name varchar2(15), date_of_birth date,leagno varchar(4));
間違った挿入:
insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')
どうしたの?
エラーコード:
Fehler beim Start in Zeile 1 in Befehl:
insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')
Fehlerbericht:
SQL-Fehler: ORA-01858: Ein nicht-numerisches Zeichen wurde gefunden, während ein numerisches Zeichen erwartet wurde
01858. 00000 - "a non-numeric character was found where a numeric was expected"
*Cause: The input data to be converted using a date format model was
incorrect. The input data did not contain a number where a number was
required by the format model.
*Action: Fix the input data or the date format model to make sure the
elements match in number and type. Then retry the operation.
解決
*原因:日付形式モデルを使用して変換する入力データは正しくありませんでした。入力データには、フォーマットモデルで数値が必要な数字が含まれていませんでした。
使用している日付文字列は、Oracleが期待しているものと一致しません。デフォルトの形式であるIIRCは、使用しようとしているMon-Dd-yyyではなく、DD-Mon-Yyyyです。
他のヒント
INSERT
INTO PLAYERS
(
PlayerNo,
Name,
date_of_birth,
leagno
)
VALUES
(
1,
'Philipp K',
TO_DATE('Jan-10-1999','Mon-dd-yyyy'),
'1'
)
適切な形式でto_dateを使用して日付を提供する必要があります。
エラーが説明します:
「日付形式モデルを使用して変換される入力データは正しくありませんでした。入力データには、フォーマットモデルで数値が必要な数字が含まれていませんでした」
これが意味するのは、date_of_birth列に渡されている値は間違った形式です。デフォルトでは、Oracleは日付がdd-mon-yyyの形式であることを期待しています。 Mon-Dd-yyyyの形式で日付を渡しています。
これに対処する方法は2つあります。
- 明示的なフォーマットマスクを使用します。
to_date('Jan-10-1999', 'MON-DD-YYYY')
- 変化する nls_date_formatパラメーター, 、セッションまたはデータベースレベルでさえ。 f詳細はこちらです と ここ.
- 挿入ステートメントを変更して、予想される形式で日付を渡します。
所属していません StackOverflow