我试图在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'
它在表格中显示以下内容:
当然,我创建了表格& colulo'之前:
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)
);
我见过许多Casting的例子,但是所有的例子都在select下使用了cast函数 声明。
知道我怎么做才能表演我想要的东西吗?
我想将$ 10,000.45999作为十进制值存储到表中。 这将是10000.45999
感谢您的支持!
答案 0 :(得分:2)
您可以通过修正号码来插入值。对于您的情况,这应该工作:
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
语句中包含列列表。
答案 1 :(得分:1)
您不能在该查询的值中使用逗号或美元符号。
您可以将查询重写为:
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');