如果把脚本转换后出现了bpchar(xx)类型,那么一定要修改成varchar(xx)类型,否则字段值的后面会有空格,无论怎么update都是无效的,唯有更改为varchar(xx)类型再执行例如:
UPDATE sys_power SET open_type = RTRIM(open_type);
再查询: select open_type from sys_power; 这样就会发现上面这条update语句清除值后方空格有效了,之前无效
更改后前面的步骤后,如果导出建表语句出现字段后面默认值显示DEFAULT NULL::bpchar ,那么可以全局替换成DEFAULT NULL,因为bpchar已经不需要了
在 PostgreSQL 中,bpchar 类型是一种固定长度的字符类型,它会在存储字符串时自动填充空格以达到指定的长度。这导致在更新 bpchar 类型字段时,即使使用了 RTRIM() 函数去除空格,也会出现空格保留的情况。
这种行为是由于 bpchar 类型的特性决定的。它将字符串存储为固定长度,如果字符串长度不足指定长度,会自动使用空格进行填充,而无论字段值后面是否有额外的空格。
如果你希望完全去除字段值后面的空格,可以考虑将字段类型更改为 varchar 类型,因为 varchar 类型是变长的,并不会自动填充空格。这样,你可以使用 RTRIM() 函数成功去除字段值后面的空格。