0
votes

Insérer dans ne fonctionne pas dans Oracle lorsqu'une colonne unique a plus de caractères

J'ai créé une table comme suit: xxx

J'ai la colonne notes qui a plus de 100 caractères.so, j'ai essayé est: < Pré> xxx

mais je reçois une erreur:

erreur à la ligne 1
Ora-01861: littéral ne correspond pas à la chaîne de format

Quel pourrait être le meilleur type de données pour ces longs texte à Oracle?


0 commentaires

4 Réponses :


1
votes

Datation de naissance code> est une date, pas une varachar, vous devez donc la convertir:

to_date('1968-12-08', 'yyyy-mm-dd')


2 commentaires

Après avoir changé la date à TO_Date, j'ai eu cette erreur :: ora-12899: valeur trop grande pour la colonne "Shop". "Employés". "Notes" (réel: 165, maximum: 100)


@ KarkiaShwin Error est assez clair, vous essayez d'insérer 165 caractères, tandis que la définition est jusqu'à 100



0
votes

Évidemment, vous ne pouvez pas vous attendre à mettre quelque chose aussi long que 300 caractères dans quelque chose qui accepte 100 caractères, pouvez-vous?

Mais ce n'est pas votre problème. La date est. La 4ème colonne est Date de naissance Code>, son type de données est date code>, mais vous insérez une chaîne forte> dans celle-ci, car '1968-12- 08 ' code> est strong> une chaîne. Vous auriez dû utiliser une date littéral, c'est-à-dire date '1968-12-08' code>. P>

OH, oui - retour à votre question initiale (bien que la mauvaise question dans ce contexte ): meilleur type de données pour un texte long em>. Vous pouvez créer une colonne dont le type de données est varchar2 (4000) code> et il accepte de manière heureuse que la chaîne "longue" utilisée. Ou, vous pouvez même choisir un clob code> qui accepte jusqu'à 4 giga de caractères; Plus que suffisant pour vous, je présume. P>

Enfin, votre requête: P>

SQL> INSERT INTO employees
  2    (EmployeeID, LastName, FirstName, BirthDate, Photo, Notes)
  3  VALUES
  4    (1, 'Davolio', 'Nancy', date '1968-12-08', 'EmpID1.pic',
  5     substr('Education includes a BA in psychology from Colorado State University. She also completed (The Art of the Cold Call). Nancy is a member
 of Toastmasters International.', 1, 100))
  6  ;

1 row created.

SQL>


0 commentaires

3
votes

1968-12-08 est une chaîne et vous devez insérer la date dans votre table.

La conversion de la chaîne en date est nécessaire dans chaque fois que les dates sont utilisées.

Il y a deux façons de convertir votre chaîne à la date.

  1. date '1968-12-08'
  2. to_date ('1968-12-08', 'yyyy-mm-dd')

    acclamations !!


3 commentaires

Après avoir changé la date à TO_Date, j'ai eu cette erreur :: ora-12899: valeur trop grande pour la colonne "Shop". "Employés". "Notes" (réel: 165, maximum: 100)


@KarkiaShwin Votre colonne Notes n'est que de 100 octets et vous essayez d'insérer 165 caractères. Réduisez la taille des notes à 100 caractères. Voir des réponses ci-dessous.


@Karkiashwin Je dirais que je dirais que je dirais que "ora-12899: valeur trop grande pour la colonne" Erreur est assez explicite. Cela signifie que vous avez fixé le problème avec la date et déplacés sur le prochain numéro.



0
votes

Dans ce cas, je suggère simplement de créer simplement la colonne plus grande: xxx

dbfiddle ici

Si vous avez besoin de quelque chose de plus grand que celui-ci, vous pouvez utiliser le type de données


0 commentaires