现在oracle中有char(70)类型的数据,不够70个字符给自动加空格了,想把空格去掉,用了一些方法都没成功,哪位高手写过这样的代码,帮帮忙吧!感谢大家,鞠躬!
解决方案 »
- Oracle导入时报错,求解,急~~~~~~~~~!!!!!
- 请教distinct用法
- pl/sql删除数据后,通过PB还能查询到已经删除的数据
- linux下怎么导入从windows导出的oracle的dmp,用sql plus
- pl/sql developer中能不能不显示查询结果而将结果导出到excel或文本文件中
- oracle 9i怎么备份啊
- 那位大哥有计算机方面的英文论文和译文啊!!
- 请问ORACL中有什么命令可以把表结构和数据导出一个文件,就像MYSQL那样的导成一个.SQL有吗?
- 一个简单的oracle建表问题
- 有哪位高手能解决ORA-03113 end-of-file on communication channel故障(高分)
- 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去掉空格