Rumah  >  Soal Jawab  >  teks badan

Masukkan penukaran menggunakan MySQL

Saya cuba memasukkan nilai ke dalam jadual dalam MySQL tetapi tidak dapat berfungsi. Saya menggunakan pertanyaan berikut:

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

MySQL memaparkan ralat berikut:

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

Jadual menunjukkan perkara berikut:

Sudah tentu, saya mencipta jadual "articulo" sebelum:

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

Saya telah melihat banyak contoh tentang pemutus, tetapi semuanya menggunakan fungsi pemutus di bawah pilihan kenyataan.

Ada idea apa yang boleh saya lakukan untuk melakukan tindakan yang saya mahukan?

Saya ingin menyimpan $10,000.45999 sebagai nilai perpuluhan ke dalam jadual. Ini akan menjadi 10000.45999

Terima kasih atas sokongan anda!

P粉189606269P粉189606269373 hari yang lalu697

membalas semua(2)saya akan balas

  • P粉701491897

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

    Anda tidak boleh menggunakan koma atau tanda dolar dalam nilai dalam pertanyaan ini.

    Anda boleh menulis semula pertanyaan sebagai:

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

    Walau bagaimanapun, jika lajur anda ditakrifkan secara eksplisit sebagai DECIMAL(10,5), tidak perlu menukar nilai kepada perpuluhan.

    Cuma tulis:

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

    balas
    0
  • P粉587780103

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

    Anda boleh memasukkan nilai dengan nombor tetap. Untuk kes anda, ini sepatutnya berfungsi:

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

    Tegasnya, cast() tidak diperlukan, tetapi saya suka mengelakkan penukaran tersirat - ini boleh menyebabkan masalah yang sukar dikesan.

    Sila ambil perhatian: Adalah lebih baik untuk memasukkan senarai lajur dalam pernyataan insert.

    balas
    0
  • Batalbalas