PostgreSQL插入小数报错:INSERT语句需类型转换问题求助
问题分析与解决
你的报错根源不是numeric列插入小数的问题,而是INSERT语句里值的顺序和blse表的列顺序不匹配。
数据库会按你写的VALUES顺序,依次对应表的列。比如如果blse表的第一列是日期类型,你却把数字2082.7放在第一个位置,相当于把数字塞给了日期列,自然触发“向日期列提供数字”的错误。
解决步骤
- 先查清楚
blse表的列结构,执行对应语句:
确认列的名称、数据类型和排列顺序。-- MySQL环境用这条 DESCRIBE blse; -- 通用SQL环境用这条 SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'blse'; - 插入时明确指定列名,不用依赖表的默认列顺序,示例写法:
把语句里的占位名称换成表中实际的列名即可。INSERT INTO blse (你的numeric类型列名, industry, state, 你的日期类型列名) VALUES (2082.7, 'Total Nonfarm', 'Alabama', '01/31/2020'); - 如果数据库不识别
01/31/2020这种日期格式,可转换为标准格式,比如MySQL下的写法:INSERT INTO blse (你的numeric类型列名, industry, state, 你的日期类型列名) VALUES (2082.7, 'Total Nonfarm', 'Alabama', STR_TO_DATE('01/31/2020', '%m/%d/%Y'));
内容的提问来源于stack exchange,提问作者user19926860
相关产品推荐
相关产品推荐

