【postgresql】postgresql字段类型变更varchar---> Float

114 篇文章 15 订阅
8 篇文章 0 订阅

postgresql字段类型变更varchar—> Float

varchar—> Float

CAST 函数将字段转换为 FLOAT 类型,如下所示:

SELECT CAST(data1 AS FLOAT), CAST(data2 AS FLOAT) FROM db_1;

如果你想在表结构中直接将这两个字段定义成 FLOAT 类型,可以使用 ALTER TABLE 语句,如下所示:

ALTER TABLE db_1 ALTER COLUMN data1 TYPE FLOAT;
ALTER TABLE db_1 ALTER COLUMN data2 TYPE FLOAT;

注意:这两个语句执行后,原来表中的数据类型会被修改为 FLOAT 类型,如果原来的数据不是有效的浮点数,转换过程中可能会出现错误。因此在执行这两个语句之前,最好备份一下原来的数据。

在执行上面语句的时候,竟然不出意料的来了个报错:

ERROR: column “data2” cannot be cast automatically to type double precision

这个错误是由于 PostgreSQL 不支持直接将 varchar 类型转换为 double precision 类型,需要先将该字段的 varchar 类型转换为 numeric 类型,再将 numeric 类型转换为 double precision 类型。

以下是一个示例 SQL 语句,可以将 db_1 表中的 data2 字段的数据类型从 varchar 转换为 double precision:

-- data1操作
-- 将 data1 字段的 varchar 类型转换为 numeric 类型
ALTER TABLE db_1 ALTER COLUMN data1 TYPE numeric USING data1::numeric;

-- 将 data1 字段的 numeric 类型转换为 double precision 类型
ALTER TABLE db_1 ALTER COLUMN data1 TYPE double precision USING data1::double precision;

-- data2操作

-- 将 data2 字段的 varchar 类型转换为 numeric 类型
ALTER TABLE db_1 ALTER COLUMN data2 TYPE numeric USING data2::numeric;

-- 将 data2 字段的 numeric 类型转换为 double precision 类型
ALTER TABLE db_1 ALTER COLUMN data2 TYPE double precision USING data2::double precision;

这样就修改好了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ye6c4yhP-1680247103831)(【git报错】unable to resolve reference 'ORIG_HEAD' reference broken.assets/image-20230331151703404.png)]

请注意,这里的转换可能会因为数据类型不匹配而失败,需要先备份好数据再进行操作。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都吴所谓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值