recherche

Maison  >  Questions et réponses  >  le corps du texte

Insérer une conversion à l'aide de MySQL

J'essaie d'insérer une valeur dans une table dans MySQL mais je n'arrive pas à la faire fonctionner. J'utilise la requête suivante :

INSERT into articulo values (32,'Sala',CAST(',000.45999' AS DECIMAL(10,5)),40.2399,200.2399,3,'kid 3');

MySQL affiche l'erreur suivante :

1 row(s) affected, 1 warning(s): 1292 Truncated incorrect DECIMAL value: ',000.45999'

Le tableau montre ce qui suit :

Bien sûr, j'ai créé le tableau "articulo" avant :

CREATE Table articulo
(
 id_art int NOT NULL,
 nom_art varchar (25) DEFAULT 'XXXXXXXXXXXXX',
 prec_art decimal (10,5) DEFAULT 0.000,
 peso_art decimal (10,5),
 existencia float,
 color_art int, CONSTRAINT chk_color1 CHECK (color_art between 0 and 20),
 um_art varchar (10) DEFAULT 'DEF_PZA',
 primary key (id_art)
);

J'ai vu de nombreux exemples de diffusion, mais ils utilisent tous la fonction de diffusion sous sélection déclaration.

Avez-vous une idée de ce que je peux faire pour effectuer l'action que je souhaite ?

Je souhaite stocker 10 000,45999 $ sous forme de valeur décimale dans un tableau. Ce sera 10000.45999

Merci pour votre soutien !

P粉189606269P粉189606269432 Il y a quelques jours734

répondre à tous(2)je répondrai

  • P粉701491897

    P粉7014918972023-11-03 17:27:56

    Vous ne pouvez pas utiliser de virgules ou de signes dollar dans les valeurs de cette requête.

    Vous pouvez réécrire la requête comme :

    INSERT into articulo values (32,'Sala',CAST('10000.45999' AS DECIMAL(10,5)),40.2399,200.2399,3,'kid 3');

    Cependant, si votre colonne est explicitement définie comme DECIMAL(10,5), il n'est pas nécessaire de convertir les valeurs en décimales.

    Écrivez simplement :

    INSERT into articulo values (32,'Sala',10000.45999,40.2399,200.2399,3,'kid 3');

    répondre
    0
  • P粉587780103

    P粉5877801032023-11-03 14:01:41

    Vous pouvez insérer des valeurs par nombres fixes. Pour votre cas, cela devrait fonctionner :

    INSERT into articulo 
        SELECT 32, 'Sala',
               CAST(REPLACE(REPLACE(',000.45999', ',', ''), '$', '') AS DECIMAL(10,5)),
               40.2399, 200.2399, 3, 'kid 3';

    À proprement parler, cast() n'est pas obligatoire, mais j'aime éviter les conversions implicites - elles peuvent causer des problèmes difficiles à détecter.

    Veuillez noter : il est préférable d'inclure la liste des colonnes dans la déclaration insert.

    répondre
    0
  • Annulerrépondre