suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Fügen Sie die Konvertierung mit MySQL ein

Ich versuche, einen Wert in eine Tabelle in MySQL einzufügen, kann ihn aber nicht zum Laufen bringen. Ich verwende die folgende Abfrage:

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

MySQL zeigt den folgenden Fehler an:

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

Die Tabelle zeigt Folgendes:

Natürlich habe ich die Tabelle „articulo“ vorher erstellt:

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)
);

Ich habe viele Beispiele zum Thema Casting gesehen, aber alle verwenden die Casting-Funktion unter „Auswählen“. Stellungnahme.

Irgendeine Idee, was ich tun kann, um die gewünschte Aktion auszuführen?

Ich möchte 10.000,45999 $ als Dezimalwert in einer Tabelle speichern. Dies wird 10000,45999 sein

Vielen Dank für Ihre Unterstützung!

P粉189606269P粉189606269432 Tage vor736

Antworte allen(2)Ich werde antworten

  • P粉701491897

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

    您不能在该查询中的值中使用逗号或美元符号。

    您可以将查询重写为:

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

    但是,如果您的列已明确定义为 DECIMAL(10,5),则无需将值转换为小数。

    简单地写:

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

    Antwort
    0
  • P粉587780103

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

    您可以通过固定数字来插入值。对于您的情况,这应该有效:

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

    严格来说,cast() 不是必需的,但我喜欢避免隐式转换——这些可能会导致难以检测的问题。

    请注意:最好在 insert 语句中包含列列表。

    Antwort
    0
  • StornierenAntwort