文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 数据库使用/ 数据类型转换出现报错:invalid input syntax for xxx
更新时间:2024-11-01 GMT+08:00

数据类型转换出现报错:invalid input syntax for xxx

问题现象

某张表的某个字段类型为varchar(20),数据为5.0,在使用cast(xxx as integer)转换成整数型时报错:invalid input syntax for integer 5.0。

原因分析

在SQL语句执行过程中,若遇到类似invalid input syntax for integer/bigint/numeric等报错的问题,基本都是数据类型之间转换导致,如字符a或空格转换成integer、bigint类型时触发。

在熟悉GaussDB(DWS)的数值类型和字符类型后,可以避免数据类型的使用问题,参考数据类型章节。

处理方法

以上述问题现象中的“字符串类型varchar直接转换为整数型integer”报错为例,可以先将字段类型修改为decimal(任意精度型)再进行转换来处理。

具体的操作步骤如下:

  1. 假设报错表名为product,表定义如下:

    1
    SELECT * FROM PG_GET_TABLEDEF('product');
    

  2. 将查询结果转换为整数型。

    1
    SELECT CAST(price AS integer) FROM product;
    

    出现如下报错:

  3. 修改表字段的数据类型为decimal。

    1
    ALTER TABLE product ALTER COLUMN price TYPE decimal(10,1);
    

  4. 成功转换字段为整数型。

    1
    SELECT CAST(price AS integer) FROM product;