有什么方法能将oracle中CHAR类型数据中的空格去掉呢?希望大家帮忙! 现在oracle中有char(70)类型的数据,不够70个字符给自动加空格了,想把空格去掉,用了一些方法都没成功,哪位高手写过这样的代码,帮帮忙吧!感谢大家,鞠躬! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把char类型修改为varchar不就可以 了吗? char在数据库中存储总是将不足定义长度以空格填补,取出数据后可以使用trim函数来截取空格。使用varchar2就行了,使用char得不到任何明显的好处!反而自寻烦恼!! 一般的系统中除非只有固定长度的字段采用char,其他都用varchar2的 不是我不想弄成varchar2,数据是从别的数据库下载下来的,下载到ORACLE数据库上后就是char类型的! 用过trim方法,不能够截取空格! --trim() 这个函数只是在显示的时候将末尾空格去掉。--由于你数据库字段类型是 char类型,所以只要你的数据位数不足70位,数据库就会默认后补空格,这就叫规矩。--如果你想改变这个规矩,请联系甲骨文公司,在12g版本上修改。 可以用脚本把CHAR类型字段全部转换成VARCHAR2类型,同时截掉字符串的空格,如下:declarebegin for c in (select * from user_tab_columns t1 where t1.DATA_TYPE = 'CHAR' ) loop execute immediate 'alter table ' || c.table_name || ' add g_w_' || c.column_name || ' varchar2(' || c.char_length || ')'; execute immediate 'update ' || c.table_name || ' set g_w_' || c.column_name || ' = ' || c.column_name; execute immediate 'update ' || c.table_name || ' set ' || c.column_name || ' = null'; execute immediate 'alter table ' || c.table_name || ' modify ' || c.column_name || ' varchar2(' || c.char_length || ')'; execute immediate 'update ' || c.table_name || ' set ' || c.column_name || ' = trim(g_w_' || c.column_name || ')'; execute immediate 'alter table ' || c.table_name || ' drop column g_w_' || c.column_name; end loop;end; 字段类型不改,没办法实现只能在select的时候用trim去掉空格 确实是用replace(columnname,' ','')解决的,不过char字段里的好像不是空格,我从中截取了一段然后用的replace方法。谢谢各位的回答! 企业库调用oracle存储过程问题 数据库查询速度很慢,重启后正常 这个动态sql应该怎么改? rman异机恢复是否可行 高手们,帮小弟看看这个存储过程该如何写! 根据输入参数,动态生产表 obj$表的索引I_OBJ2被损坏,该如何修复? 请教各位大侠,一个Oracle触发器的问题 win2000server+sp4下安装oracle9i错误,出现temp目录无写权限,空间不足20M。。。急死我了!!!!!! 关于分组查询SQL求救 in子句为什么不能匹配自定义函数返回的条件 帮忙写一个oracle存储过程,类似构造一棵树,如下描述
取出数据后可以使用trim函数来截取空格。使用varchar2就行了,使用char得不到任何明显的好处!
反而自寻烦恼!!
--trim() 这个函数只是在显示的时候将末尾空格去掉。
--由于你数据库字段类型是 char类型,所以只要你的数据位数不足70位,数据库就会默认后补空格,这就叫规矩。
--如果你想改变这个规矩,请联系甲骨文公司,在12g版本上修改。
declare
begin
for c in (select *
from user_tab_columns t1
where t1.DATA_TYPE = 'CHAR'
) loop
execute immediate 'alter table ' || c.table_name || ' add g_w_' || c.column_name || ' varchar2(' || c.char_length || ')';
execute immediate 'update ' || c.table_name || ' set g_w_' || c.column_name || ' = ' || c.column_name;
execute immediate 'update ' || c.table_name || ' set ' || c.column_name || ' = null';
execute immediate 'alter table ' || c.table_name || ' modify ' || c.column_name || ' varchar2(' || c.char_length || ')';
execute immediate 'update ' || c.table_name || ' set ' || c.column_name || ' = trim(g_w_' || c.column_name || ')';
execute immediate 'alter table ' || c.table_name || ' drop column g_w_' || c.column_name;
end loop;
end;
字段类型不改,没办法实现
只能在select的时候用trim去掉空格