Maison > Questions et réponses > le corps du texte
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粉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');
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
.