日期:2014-05-17  浏览次数:21013 次

怎么用plsql语句把一个表的所有列都转换为字符型?
就类似于 select * from table 这种的
但表中的数据类型是不一样的,我要把它搜出来全部转换为字符型
------解决方案--------------------
试试这样,根据user_tab_columns 这个视图找原表的字段类型,如果不为
'VARCHAR2','VARCHAR','CHAR'之一的话,全部改为VARCHAR2(2000)

declare
l_t varchar2(100):=upper('&a');
begin
execute immediate 'create table '
------解决方案--------------------
l_t
------解决方案--------------------
'_bak as select * from '
------解决方案--------------------
l_s
------解决方案--------------------
' where 1=2 ';
for c in (select COLUMN_NAME,data_type from user_tab_columns where table_name=l_t) loop
if c.data_type not in ('VARCHAR2','VARCHAR','CHAR') then
execute immediate 'alter table '
------解决方案--------------------
l_t
------解决方案--------------------
'_bak modify '
------解决方案--------------------
c.COLUMN_NAME
------解决方案--------------------
' VARCHAR2(2000) ';
END LOOP;
END;

------解决方案--------------------
上面那个,少了end if;
刚测试了一下,如下图:


------解决方案--------------------
建议楼主重新建表。把数据导成txt格式,直接的用sqlload导入