当前位置:   article > 正文

【postgresql】postgresql字段类型变更varchar---> Float_pgsql 修改字段类型

pgsql 修改字段类型

postgresql字段类型变更varchar—> Float

varchar—> Float

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

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

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

ALTER TABLE db_1 ALTER COLUMN data1 TYPE FLOAT;
ALTER TABLE db_1 ALTER COLUMN data2 TYPE FLOAT;
  • 1
  • 2

注意:这两个语句执行后,原来表中的数据类型会被修改为 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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这样就修改好了

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

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号