Sql语句批量修改数据类型

批量修改数据类型

数据库类型

SQL Server 

实现方式

查询待修改的字段

select sys.objects.name as tableName,syscolumns.name as columnsName 
from syscolumns 
LEFT OUTER JOIN sys.objects ON 
syscolumns.id = sys.objects.object_id
where  syscolumns.xtype = '62'

syscolumns.xtype 为字段类型,62为float,如果需要过滤掉特定的表或字段可在sql 后自行添加条件语句。

整理语句

将查询到的数据转换到可执行的sql,可编写存储过程、或者使用代码循环处理,也可直接使用 Excel,整理成自己想要的数据,再拷贝执行

《Sql语句批量修改数据类型》 Excel整理

《Sql语句批量修改数据类型》 执行SQL

附录1 sysobjects 数据字典

列名数据类型描述
namesysname对象名。
Idint对象标识号。
xtypechar(2)对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
uidsmallint所有者对象的用户 ID。
infosmallint保留。仅限内部使用。
statusint保留。仅限内部使用。
base_schema_verint保留。仅限内部使用。
replinfoint保留。供复制使用。
parent_objint父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
crdatedatetime对象的创建日期。
ftcatidsmallint为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
schema_verint版本号,该版本号在每次表的架构更改时都增加。
stats_schema_verint保留。仅限内部使用。
typechar(2)对象类型。可以是下列值之一:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程
userstatsmallint保留。
sysstatsmallint内部状态信息。
indexdelsmallint保留。
refdatedatetime留作以后使用。
versionint留作以后使用。
deltrigint保留。
instrigint保留。
updtrigint保留。
seltrigint保留。
categoryint用于发布、约束和标识。
cachesmallint保留。

附录2 Syscolumns 数据字典

列名数据类型描述
namesysname列名或过程参数的名称。
idint该列所属的表对象 ID,或与该参数关联的存储过程 ID。
xtypetinyintsystypes 中的物理存储类型。
typestattinyint仅限内部使用。
xusertypesmallint扩展的用户定义数据类型 ID。
lengthsmallintsystypes 中的最大物理存储长度。
xprectinyint仅限内部使用。
xscaletinyint仅限内部使用。
colidsmallint列或参数 ID。
xoffsetsmallint仅限内部使用。
bitpostinyint仅限内部使用。
reservedtinyint仅限内部使用。
colstatsmallint仅限内部使用。
cdefaultint该列的默认值 ID。
domainint该列的规则或 CHECK 约束 ID。
numbersmallint过程分组时(0 表示非过程项)的子过程号。
colordersmallint仅限内部使用。
autovalvarbinary(255)仅限内部使用。
offsetsmallint该列所在行的偏移量;如果为负,表示可变长度行。
statustinyint用于描述列或参数属性的位图:
0x08 = 列允许空值。
0x10 = 当添加 varchar 或 varbinary 列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零。
0x40 = 参数为 OUTPUT 参数。
0x80 = 列为标识列。
typetinyintsystypes 中的物理存储类型。
usertypesmallintsystypes 中的用户定义数据类型 ID。
printfmtvarchar(255)仅限内部使用。
precsmallint该列的精度级别。
scaleint该列的小数位数。
iscomputedint表示是否已计算该列的标志:
0 = 未计算。
1 = 已计算。
isoutparamint表示该过程参数是否是输出参数:
1 = 真。
0 = 假。
isnullableint表示该列是否允许空值:
1 = 真。
0 = 假。

附录3 syscolumns.xtype 类型

键值键值键值键值231 nvarchar
34 image58 smalldatetime99 ntext165 varbinary231 nvarchar
35 text59 real104 bit167 varchar239 nchar
36 uniqueidentifier60 money106 decimal173 binary
48 tinyint61 datetime108 numeric175 char
52 smallint62 float122 smallmoney189 timestamp
56 int98 sql_variant127 bigint231 sysname
    原文作者:过桥0811
    原文地址: https://www.jianshu.com/p/b34a51338166
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞