使用MySQL插入转换
P粉189606269
P粉189606269 2023-11-02 19:47:58
0
2
651

我尝试将一个值插入 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学习者快速成长!