Oracle数据库char(7)改为char(36)后,再改为varchar2(36)出现的问题

时间:2021-11-25 21:42:41

案例:

原来表的结构

CREATE TABLE T_MD_DATA_ELEMENT 
(
ELEMENT_ID CHAR(7) NOT NULL
)

由于需求的变化,字段长度需要改,实施人员把这个字段改为了CHAR(36),导致现场的项目有很多查询语句也需要改,后来我让实施人员改为

CREATE TABLE T_MD_DATA_ELEMENT 
(
ELEMENT_ID VARCHAR2(36) NOT NULL
但结果还是有些模块不能正常使用,之前只知道从从CHAR(7)改为CHAR(36)后,原来的数据都变成了36位的字符串,不够36的话会以空格来补全。然后改为VARCHAR2(36)后,表里面的数据还是以空格补全的形式存在表里面,也就是之前那些自动补全的空格不会自动消失,就是这个原因导致了有些模块不能正常使用。后来在数据库中把ELEMENT_ID的值自动补全的空格去掉之后就可以正常使用了,真是一个坑。
Oracle数据库char(7)改为char(36)后,再改为varchar2(36)出现的问题