为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:linux
【CPU】:intel
【问题描述】*:
char类型字段值未达到指定大小,剩余部分为什么会自动填充空格,如何不填充空格补全?
如图:name字段定义的 char(255),当不足255自动填充空格
补充一下后来看到的办法
从MySQL移植达梦,char类型达梦会自动空格补齐
【问题说明】:
从MySQL移植达梦,char类型在MySQL不会自动空格补齐,达梦会自动空格补齐。可能会导致hibernate不会自动过滤char类型中的空格,查询不到数据;
【解决方法】:
如下三种方法修改char类型为varchar2类型。
在DTS迁移时,映射char类型为varchar2类型;
生成批量修改char为varchar2
select ‘alter table ‘||a.TABLE_NAME||’ modify ‘||a.COLUMN_NAME||’ VARCHAR2(’||data_length||‘);’ from all_tab_columns a where a.data_type=‘CHAR’ AND OWNER=‘用户名’;
通过rtrim函数把数据右边的空格清除掉
update 表名 set 列名1=rtrim(列名1);
char是定长类型,不足的就会补充空格,如果不想要空格请用varchar类型