使用MySQL插入轉換
P粉189606269
P粉189606269 2023-11-02 19:47:58
0
2
654

我嘗試將一個值插入 MySQL 中的表中,但無法使其工作。我正在使用以下查詢:

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

MySQL 顯示下列錯誤:

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

表中顯示以下內容:

當然,我之前創建了表“articulo”:

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

我看過很多關於強制轉換的例子,但它們都在 select 下使用了強制轉換函數 陳述。

知道我該怎麼做才能執行我想要的操作嗎?

我想將 $10,000.45999 作為十進制值儲存到表中。 這將是 10000.45999

感謝您的支持!

P粉189606269
P粉189606269

全部回覆(2)
P粉701491897

您無法在該查詢中的值中使用逗號或美元符號。

您可以將查詢重寫為:

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');
P粉587780103

您可以透過固定數字來插入值。對於您的情況,這應該有效:

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

嚴格來說,cast() 不是必需的,但我喜歡避免隱式轉換——這些可能會導致難以檢測的問題。

請注意:最好在 insert 語句中包含列列表。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!