سؤال

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.
هل كانت مفيدة؟

المحلول

*السبب: كانت بيانات الإدخال التي سيتم تحويلها باستخدام نموذج تنسيق التاريخ غير صحيح. لم تحتوي بيانات الإدخال على رقم حيث كان هناك حاجة إلى رقم بواسطة نموذج التنسيق.

سلسلة التاريخ التي تستخدمها لا تتطابق مع ما تتوقعه أوراكل. التنسيق الافتراضي ، IIRC ، هو dd-mon-yyyy ، وليس Mon-dd-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-yyyy. أنت تمرر موعدًا بتنسيق Mon-dd-yyyy.

هناك اثنان - بشكل جيد ثلاثة - طرق للتعامل مع هذا.

  1. استخدم قناع تنسيق صريح: to_date('Jan-10-1999', 'MON-DD-YYYY')
  2. يتغيرون المعلمة NLS_DATE_FORMAT, ، في الجلسة أو حتى مستوى قاعدة البيانات. Find أكثر هنا و هنا.
  3. قم بتغيير بيان الإدراج الخاص بك لتمرير التاريخ بالتنسيق المتوقع.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top