oracle数据库,char与BYTE的问题
我维护的一个系统,存在一个问题。 有个表的一个字段:客户地址是用varchar2(80 char)建的。 但是后来发现,超过40个汉字也就是超过80 byte,JAVA应用就会有问题。 我现在想把这样的数据全部筛选出来,该怎么做? 表不可以改动,地址内容也是有英文和中文,不能简单的把条件定为超过40。 谢谢各位大侠,救命啊~~!!!
我维护的一个系统,存在一个问题。 有个表的一个字段:客户地址是用varchar2(80 char)建的。 但是后来发现,超过40个汉字也就是超过80 byte,JAVA应用就会有问题。 我现在想把这样的数据全部筛选出来,该怎么做? 表不可以改动,地址内容也是有英文和中文,不能简单的把条件定为超过40。 谢谢各位大侠,救命啊~~!!!
答案:用lengthb函数判断一下
where lengthb(xxx)>80
其他:其实也简单。。。
1往你的表新加一列c,尽量大点的varchar2
2然后update A set b = c 就是把新加的c字段更新成原来不够大的b里的值,这样把历史数据先缓存下来
3接着update A set b=''把原先字段的值内容清空,这样就可以去掉这一列了
4 alter table A drop b 删除b列
5再来alter table A add b varchar2(4000) 新加入这个字段列就好了,大小最大是4000,而且你代码都不用改,因为字段名还是b
6最后update A set c = b 即把缓存下来的c里的值更新到b里去,当然此时的b已经变大了~
上一个:oracle数据库,number型字段,怎么设置插入的值不能小于0,如果小于0,默认为0.
下一个:导入oracle数据库时如何过滤具体的表? imp ....