首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么一次性修改字段类型

2012-03-20 
如何一次性修改字段类型我的系统设计时没考虑繁体中文,文本字段都用了varchar(n)、text,最近移植到繁体下,

如何一次性修改字段类型
我的系统设计时没考虑繁体中文,文本字段都用了varchar(n)、text,最近移植到繁体下,需要变更为
nvarchar(n)、ntext,由于很多表很多字段,一个个改太麻烦了,有没有通过语句一次性改的?
另外有些字段用char(n),也想一起变更为nvarchar(n)

[解决办法]

SQL code
alter table tablename alter column columnname nvarchar(n)
[解决办法]
建议你修改之前先备份。
[解决办法]
SQL code
--一次性修改declare @sql nvarchar(4000)set @sql=''select @sql=@sql+'alter table 表名 alter column '+name+' nvarchar(255)'from syscolumns where id=OBJECT_ID(N'表名')exec (@sql)
[解决办法]
~~错了
[解决办法]
参考3楼可以实现
[解决办法]
在三楼的基础上 加个判断就可以了
[解决办法]
syscolumns 表中
where xtype=35 的 你就把属性改成 ntext
where xtype=167 的 你就把属性改成 nvarchar
where xtype=175 的 你就把属性改成 nchar
[解决办法]
SQL code
--修改过之后  join XTYPE  declare @sql nvarchar(4000)set @sql=''select @sql=@sql+'alter table 表名 alter column '+a.name+''''+b.name+''' ('+convert(nvarchar,a.length)+')'from syscolumns a join systypes b on a.xtype=b.xtype  where a.id=OBJECT_ID(N'表名') select @sqlexec (@sql)
[解决办法]
探讨
另外,数据库下有几十个表,怎么遍历一下?

[解决办法]
探讨

引用:
另外,数据库下有几十个表,怎么遍历一下?

用Cursor,从系统表syscolumns 里遍历。

[解决办法]
探讨
另外,数据库下有几十个表,怎么遍历一下?

[解决办法]
SQL code
--我自己没有测试过,不敢测试,反正逻辑就是这样的,直接写WHILE语句循环 select name,p_id= identity(int,1,1)  into #3 from sys.tables  select * from #3  declare @p_id int,@LEN_ID int SET @LEN_ID=(SELECT COUNT(*) FROM #3) SET @p_id=1 SELECT @LEN_ID,@p_id while (@p_id<=@LEN_ID) BEGIN    declare @sql nvarchar(4000)    declare @table varchar(200)    set @table=(select name from #3 where p_id=@p_id)    set @sql=''    select @sql=@sql+'alter table '+@table+' alter column '+a.name+''+b.name+' ('+convert(nvarchar,a.length)+')    '    from syscolumns a join systypes b on a.xtype=b.xtype      where a.id=OBJECT_ID(@table)    exec (@sql)    set @p_id=@p_id+1 END
[解决办法]
alter table tablename alter column columnname nvarchar(n)

热点排行