PostgreSQL插入数据报错:VARCHAR字段触发numeric类型输入语法无效
问题解决方法
你的问题核心是实际数据库中的car表price字段类型并非VARCHAR,而是NUMERIC(或同类数值类型)。你虽然编写了CREATE TABLE语句,但大概率未成功执行以覆盖原有表结构,导致插入带$的字符串时触发数值类型校验错误。
解决步骤:
- 先确认当前表的真实结构,执行命令:
\d car;
该命令会展示表的所有字段类型,可直观确认price字段的实际类型。
- 若
price确实为数值类型,直接修改字段类型:
ALTER TABLE car ALTER COLUMN price TYPE VARCHAR(50);
如果表内无重要数据,也可删除原表重新创建:
DROP TABLE IF EXISTS car; CREATE TABLE car ( id INT, make VARCHAR(50), model VARCHAR(50), price VARCHAR(50) );
- 最后重新执行插入语句即可:
INSERT INTO car (id, make, model, price) VALUES (1000, 'Porsche', '911', '$92813.83');
补充提示:如果后续需要对价格做数值运算,不建议将其存为VARCHAR类型,应改用NUMERIC类型,插入时去掉$符号(如92813.83),展示时再按需添加$符号。
内容的提问来源于stack exchange,提问作者Luke Bourneuf
相关产品推荐
相关产品推荐

