美文网首页
Sql语句批量修改数据类型

Sql语句批量修改数据类型

作者: 过桥 | 来源:发表于2015-09-11 14:33 被阅读1312次

    批量修改数据类型

    数据库类型

    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,整理成自己想要的数据,再拷贝执行


    Excel整理Excel整理
    执行SQL执行SQL

    附录1 sysobjects 数据字典

    列名 数据类型 描述
    name sysname 对象名。
    Id int 对象标识号。
    xtype char(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 = 扩展存储过程
    uid smallint 所有者对象的用户 ID。
    info smallint 保留。仅限内部使用。
    status int 保留。仅限内部使用。
    base_schema_ver int 保留。仅限内部使用。
    replinfo int 保留。供复制使用。
    parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
    crdate datetime 对象的创建日期。
    ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
    schema_ver int 版本号,该版本号在每次表的架构更改时都增加。
    stats_schema_ver int 保留。仅限内部使用。
    type char(2) 对象类型。可以是下列值之一:
    C = CHECK 约束
    D = 默认值或 DEFAULT 约束
    F = FOREIGN KEY 约束
    FN = 标量函数
    IF = 内嵌表函数
    K = PRIMARY KEY 或 UNIQUE 约束
    L = 日志
    P = 存储过程
    R = 规则
    RF = 复制筛选存储过程
    S = 系统表
    TF = 表函数
    TR = 触发器
    U = 用户表
    V = 视图
    X = 扩展存储过程
    userstat smallint 保留。
    sysstat smallint 内部状态信息。
    indexdel smallint 保留。
    refdate datetime 留作以后使用。
    version int 留作以后使用。
    deltrig int 保留。
    instrig int 保留。
    updtrig int 保留。
    seltrig int 保留。
    category int 用于发布、约束和标识。
    cache smallint 保留。

    附录2 Syscolumns 数据字典

    列名 数据类型 描述
    name sysname 列名或过程参数的名称。
    id int 该列所属的表对象 ID,或与该参数关联的存储过程 ID。
    xtype tinyint systypes 中的物理存储类型。
    typestat tinyint 仅限内部使用。
    xusertype smallint 扩展的用户定义数据类型 ID。
    length smallint systypes 中的最大物理存储长度。
    xprec tinyint 仅限内部使用。
    xscale tinyint 仅限内部使用。
    colid smallint 列或参数 ID。
    xoffset smallint 仅限内部使用。
    bitpos tinyint 仅限内部使用。
    reserved tinyint 仅限内部使用。
    colstat smallint 仅限内部使用。
    cdefault int 该列的默认值 ID。
    domain int 该列的规则或 CHECK 约束 ID。
    number smallint 过程分组时(0 表示非过程项)的子过程号。
    colorder smallint 仅限内部使用。
    autoval varbinary(255) 仅限内部使用。
    offset smallint 该列所在行的偏移量;如果为负,表示可变长度行。
    status tinyint 用于描述列或参数属性的位图:
    0x08 = 列允许空值。
    0x10 = 当添加 varchar 或 varbinary 列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零。
    0x40 = 参数为 OUTPUT 参数。
    0x80 = 列为标识列。
    type tinyint systypes 中的物理存储类型。
    usertype smallint systypes 中的用户定义数据类型 ID。
    printfmt varchar(255) 仅限内部使用。
    prec smallint 该列的精度级别。
    scale int 该列的小数位数。
    iscomputed int 表示是否已计算该列的标志:
    0 = 未计算。
    1 = 已计算。
    isoutparam int 表示该过程参数是否是输出参数:
    1 = 真。
    0 = 假。
    isnullable int 表示该列是否允许空值:
    1 = 真。
    0 = 假。

    附录3 syscolumns.xtype 类型

    键值 键值 键值 键值 231 nvarchar
    34 image 58 smalldatetime 99 ntext 165 varbinary 231 nvarchar
    35 text 59 real 104 bit 167 varchar 239 nchar
    36 uniqueidentifier 60 money 106 decimal 173 binary
    48 tinyint 61 datetime 108 numeric 175 char
    52 smallint 62 float 122 smallmoney 189 timestamp
    56 int 98 sql_variant 127 bigint 231 sysname

    相关文章

      网友评论

          本文标题:Sql语句批量修改数据类型

          本文链接:https://www.haomeiwen.com/subject/xbppcttx.html