我试图在MySQL中的表中插入一个值,但是我无法使它工作。我使用以下查询:
INSERT into articulo values (32,'Sala',CAST('$10,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: '$10,000.45999'它在表格中显示如下:

当然,我在此之前创建了一个表“铰接字”:
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语句下使用cast函数。
知道我能怎么做才能实现我想做的事吗?
我想将$10,000.45999作为十进制值存储到表中。这将是10000.45999
多谢你们的支持!
发布于 2014-09-29 01:26:59
您可以通过修正数字来插入值。就你的情况而言,这应该是可行的:
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语句中包括列列表是个好主意。
发布于 2014-09-29 00:03:12
在查询中,您不能在值中使用逗号或美元符号。
您可以将查询重写为:
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');https://stackoverflow.com/questions/26090775
复制相似问题