数据库在设计的时候也许考虑不全面,导致某些字段类型不太准确。比如设计的时候是varchar(1024),但是实际使用的时候却发现太小了,装不下,于是需要修改字段类型为ntext什么的。

我最近就遇到了一个需求,需要修改20个字段的类型,把相同的脚本写20遍吗?NO,NO,NO!

========================================================================

我有这么一张表“Attribute”,里面有60个字段,分别是Attribute01、Attribute02、Attribute03、…… Attribute60。现在我需要把Attribute41到Attribute60的字段类型修改为ntext。

SQL Server:

DECLARE @i int
SET @i=41
DECLARE @fieldName varchar(32)
DECLARE @sqlStatement varchar(MAX) WHILE @i<=60
BEGIN
SET @fieldName = 'Attribute' + cast(@i as varchar) SET @sqlStatement ='ALTER TABLE [Attribute] ALTER COLUMN ['+@fieldName+'] [ntext] NULL'
EXEC (@sqlStatement) SET @i=@i+1
END

Oracle:

DECLARE
i NUMBER;
fieldName VARCHAR2(32);
fieldNameBK VARCHAR2(32);
sqlStatement VARCHAR2(1024); BEGIN
i:=41; LOOP
fieldName:='Attribute' || TO_CHAR(i);
fieldNameBK:='Attribute' || TO_CHAR(i) || '_bak'; --处理CLIPEX表
sqlStatement:='Alter table Attribute ADD (' || fieldNameBK || ' NCLOB null)';
EXECUTE IMMEDIATE sqlStatement;
sqlStatement:='Update Attribute set ' || fieldNameBK || ' = ' || fieldName;
EXECUTE IMMEDIATE sqlStatement;
sqlStatement:='alter table Attribute drop COLUMN ' || fieldName;
EXECUTE IMMEDIATE sqlStatement;
sqlStatement:='alter table Attribute rename COLUMN ' || fieldNameBK || ' to ' || fieldName;
EXECUTE IMMEDIATE sqlStatement; i:=i+1;
EXIT WHEN i > 60;
END LOOP; COMMIT;
END;

就这样,一个循环搞定。

SQL脚本循环修改数据库字段类型的更多相关文章

  1. 使用SQL命令行更改数据库字段类型

    ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型 添加列 ALTER TABLE students ADD COLUMN address VARCHAR(100) DEFAU ...

  2. SQL Server数据库字段类型说明

    SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...

  3. flask修改数据库字段的类型和长度

    flask修改数据库字段的类型和长度 ​ 在将models中的字段的db.String(256)修改为db.String(1024)后,执行migrate和upgrade操作后,发现数据库并没有更新, ...

  4. SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改

    当数据库有数据修改数据库字段时,默认是阻止的! 工具---选项---设计器---阻止保存要求重新创建表的更改(取消钩)

  5. 【sql】ALTER更新数据库字段

    --数据库表字段更新sql脚本,以下是示例 --新增列字段 --alter table table_name add column `address` varchar() COLLATE utf8_b ...

  6. sql脚本来获取数据库中的所有表结构了

    sql脚本来获取数据库中的所有表结构了,代码如下: use AdventureWorks2008 go SELECT (case when a.colorder=1 then d.name else ...

  7. 主流数据库字段类型转.Net类型的方法

    最近在阅读一些开源的代码,发现其中有些方法总结的很全面,至少在我做同样的事情时候,需要抓破脑袋想活着google,现在看到了这个关于主流数据库字段类型转.Net类型的方法,故收藏之,也顺便分享给那些能 ...

  8. SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称

    SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称   原来数据库名称为 aa,物理文件名称为 aa.mdf 和 aa_log.ldf:   需要修改数据库名称为 bb,物理文件名 ...

  9. 将现有的sql脚本导入 Oracle 数据库,中文乱码问题

    将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...

随机推荐

  1. 肯爹的 StringUtils.isNumeric(String str)

    在项目中遇到一处bug,调试的结果竟然是StringUtils.isNumeric(String str) 在捣鬼(采用的是org.apache.commons.lang.StringUtils),下 ...

  2. 【mysql】关于IO/内存方面的一些优化

    这里使用的是mysql  Ver 14.14 Distrib 5.6.19, for Linux (i686) using  EditLine wrapper 一.mysql目录文件 ibdata1: ...

  3. mysql插入数据与删除重复记录的几个例子(收藏)

    mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...

  4. python 发送邮件函数模块

    发送邮件函数功能 #!/usr/bin/env python # -*- coding:utf-8 -*- import smtplib from email.mime.text import MIM ...

  5. phpcmsv9 标题颜色显示问题

    在解决标题颜色问题之前首先要注意到 标题字段为title,副标题为fu_title. 如果一个文章想在首页推荐,又想在栏目首页推荐,并且这两个推荐位置的标题长度不一样,那只能用副标题区别,这样就可以在 ...

  6. Verilog (一) assignment, register and net

    Verilog 区分大小写, 且所有关键字都是小写 1  register = storage keyword reg; default x; variable that can hold value ...

  7. Zero

    Zero是我的极品现任BOSS曾用过的QQ昵称.那时候,我正跟京姑娘闹七年之痒,甩她而去赋闲在老家.Zero通过朋友介绍,看了我几篇零散的博客,就给我打电话,让我过来聊聊.本来我跟京姑娘也没有大矛盾, ...

  8. jQuery对象与dom对象的区别与相互转换

    什么是jQuery对象? 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法.例如: $("#test").htm ...

  9. MATLAB基本命令

    eye(n)创建n阶单位矩阵 zeros(n)创建n阶0方阵 rand(m,n)创建m*n阶元素为从0到1的均匀分布的随机数矩阵 round(A)对矩阵A中所有元素进行四舍五入运算 A^-1用幂运算求 ...

  10. NGUI国际化 多语言

    相关组件 NGUI的本地化操作相关的组件 Localization UILocalize Language Selection 主要部分 在需要本地化的UILabel上绑定UILocalize,填写K ...