oracle正确缩短字段(要考虑以前的是否有值)
2013-10-08 11:23
239 查看
--表名.email (字段调整为varchar2(100))
--表名.corpname (字段调整为varchar2(40))
--表名.INDUSTRY (字段调整为varchar2(2))
--表名.duty (字段调整为varchar2(32))
declare
iCount INTEGER := 0;
begin
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'email';
if iCount > 0 THEN
UPDATE 表名 t SET t.email = substrb(t.email, 0, 100) WHERE lengthb(t.email)>100;
COMMIT;
execute immediate 'alter table 表名 modify email varchar2(100)';--原值---120
END IF;
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'corpname';
if iCount > 0 THEN
UPDATE 表名 t SET t.corpname = substrb(t.corpname, 0, 40) WHERE lengthb(t.corpname)>40;
COMMIT;
execute immediate 'alter table 表名 modify corpname varchar2(40)';--原值---80
END IF;
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'INDUSTRY';
if iCount > 0 THEN
UPDATE 表名 t SET t.INDUSTRY=trim(t.INDUSTRY) where lengthb(INDUSTRY)>2;
COMMIT;
execute immediate 'alter table 表名 modify INDUSTRY varchar2(2)';--原值是字典值---3
END IF;
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'duty';
if iCount > 0 THEN
execute immediate 'alter table 表名 modify duty varchar2(32)';--原值----60
END IF;
END;
/
本文出自 “ahead51Jie” 博客,请务必保留此出处http://ahead51.blog.51cto.com/179590/1305680
--表名.corpname (字段调整为varchar2(40))
--表名.INDUSTRY (字段调整为varchar2(2))
--表名.duty (字段调整为varchar2(32))
declare
iCount INTEGER := 0;
begin
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'email';
if iCount > 0 THEN
UPDATE 表名 t SET t.email = substrb(t.email, 0, 100) WHERE lengthb(t.email)>100;
COMMIT;
execute immediate 'alter table 表名 modify email varchar2(100)';--原值---120
END IF;
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'corpname';
if iCount > 0 THEN
UPDATE 表名 t SET t.corpname = substrb(t.corpname, 0, 40) WHERE lengthb(t.corpname)>40;
COMMIT;
execute immediate 'alter table 表名 modify corpname varchar2(40)';--原值---80
END IF;
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'INDUSTRY';
if iCount > 0 THEN
UPDATE 表名 t SET t.INDUSTRY=trim(t.INDUSTRY) where lengthb(INDUSTRY)>2;
COMMIT;
execute immediate 'alter table 表名 modify INDUSTRY varchar2(2)';--原值是字典值---3
END IF;
select count(1) into iCount from user_tab_cols u where lower(u.table_name )= '表名' and u.column_name = 'duty';
if iCount > 0 THEN
execute immediate 'alter table 表名 modify duty varchar2(32)';--原值----60
END IF;
END;
/
本文出自 “ahead51Jie” 博客,请务必保留此出处http://ahead51.blog.51cto.com/179590/1305680
相关文章推荐
- Oracle 中建表时数据库不检查外键约束的字段宽度是否一致
- Oracle中判断字段是否为数字(能转化为正整数)
- ORACLE判别字段是否包含中文
- 如何判断Oracle中某个字段的值是否重复
- oracle 10g 用正则表达式判断字段的值是否为数字
- oracle 11G 以前版本中针对大表增加有默认值的字段时的注意点
- oracle 判断字段是否为是数字等 regexp_like用法 正则表达式
- oracle 中查看一张表是否有主键,主键在哪个字段上的语句怎么查如要查aa表,
- php判断数据库中某个字段是否有值去执行excel表格写入操作
- 如何判断Oracle字段中是否包含中文的方法
- Oracle中判断字段是否包含中文
- oracle 基础和管理 如何判断某个表中是否存在某个字段?
- oracle 下操作blob字段是否会产生大量redo
- ORACLE写一函数,准确地判断字段是否含有汉字或者提取汉字等
- oracle查询某表中是否含有某字段
- oracle 函数 验证身份证号是否正确
- 在oracle中判断某个字段的值是否为数字
- oracle查询,依据一个字段的值,去判断是否查另一个值--有道笔记整理
- oracle 判断字段是否为是数字 regexp_like用法
- 有时候要改改表字段的某些精度,可能一多就不确定是否改全了,Oracle支持搜索table,字段,对象等统计信息