标题:批量转换字段类型
只看楼主
corsak
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-6-15
 问题点数:0 回复次数:1 
批量转换字段类型
一个数据库,多个表内有varchar类型的字段,想都给修改成nvarchar,有没有比较快捷的方式,挨个找眼镜都花了
搜索更多相关主题的帖子: 批量 转换 字段 比较 类型 
2021-04-04 17:23
oldfish96
Rank: 2
等 级:论坛游民
威 望:1
帖 子:16
专家分:17
注 册:2020-7-24
得分:0 
最好你先把WHILE注释掉自己测下,另外,外键问题可能导致修改不到,循环个寂寞,基本上是这思路
程序代码:
DECLARE @t TABLE( rank1 INT, 表名 VARCHAR(50), 字段名 VARCHAR(50), 数据类型 VARCHAR(20))
INSERT @t
    SELECT ROW_NUMBER() OVER ( ORDER BY S2.colid ), S.name 表名, S2.name 字段名, S3.name 数据类型
        FROM sys.sysobjects AS S
             JOIN sys.syscolumns AS S2 ON S2.id = S.id
             JOIN sys.systypes AS S3 ON S3.xtype = S2.xtype
        WHERE S.type = 'u'
              AND S3.name = 'varchar'

SELECT * FROM @t AS T

DECLARE @tLen INT, @i INT = 1, @sql VARCHAR(100)
SELECT @tLen = SUM(1) FROM @t AS T
SELECT @tLen

WHILE( @i <= @tLen )
BEGIN
    SELECT 'rank1:' + CONVERT(VARCHAR(20), T.rank1) + ' 修改表:' + T.表名 + ' 字段:' + T.字段名
        FROM @t AS T
        WHERE T.rank1 = @i
    SELECT @sql = 'ALTER TABLE ' + T.表名 + ' ALTER COLUMN ' + T.字段名 + ' NVARCHAR(100)'
        FROM @t AS T
        WHERE T.rank1 = @i
    EXEC( @sql )
    SET @i += 1
END

2021-04-25 12:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505339-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.350867 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved