SQLServer如何快速修改数据库中含有的某个字段的类型

最近遇到一个问题,由于之前数据库设计时 一系列的表中 都有两个相同字段,类型均为varchar,长度50字节,可是现在发现用户录入的数据超过了50字节,多余的数据库自动截断了。由于数据库庞大,涉及多个不同的库和表,如何解决呢?一个一个找,然后一个一个改?

一开始我确实是这么做的,可是工作量太大了,这时我想到了一个捷径:能不能把含有这些字段的表先找出来呢?

答案是肯定的,通过如下语句即可把含有对应字段的表先找出来:

SELECT  b.name  as  TableName,a.name  as  columnname,a.usertype as type  From  syscolumns    a  INNER  JOIN    sysobjects  b 
  ON  a.id=b.id    AND  b.type='U'
 AND  a.name='colorno'

其中的type=‘U’表示我们要查询的是 表(非视图,非存储过程),name=‘colorno’表示我们要找字段名是‘colorno’的列。

通过以上语句我们就可以快速找到含有对应字段的表了。

当然为了安全期间,我们部分表可能也含有这个字段,但类型可能不是varchar的(也就是别有用意,比如是 int 或者 bit),所以再修改表之前我们需要再核对一下。通过如下语句可以查询某个表的某个字段是什么类型,长度是多少。

 select column_name,data_type,CHARACTER_MAXIMUM_LENGTH from information_schema.columns
 where table_name ='tb_Test' and COLUMN_NAME='colorno'

这样我们就可以把字段的 类型和长度查询出来。

如果是varchar类型,我们就执行alter吧,语句如下:

alter table  tb_Test  alter column colorno varchar(100)

有了以上代码基础,写个程序,循环(for),判断(if),执行(ExecuteSql),ok很快搞定!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 1,189评论 0 4
  • MySQL 数据库常用命令 1、MySQL常用命令 create database name; 创建数据库 use...
    55lover阅读 4,833评论 1 57
  • Storyboard(分镜or故事板)一词源于电影业,在漫画创作中也很常见,它在电影或者漫画创作中扮演着“诠释者”...
    神兽gcc阅读 8,559评论 4 19
  • 马上要进入自己的生日月了,35周岁即将到来,在这个前半生即将跨越的时间,突然就想写一写这个主题,“不念过去...
    胡永群阅读 680评论 1 51