日期:2014-05-18 浏览次数:20784 次
alter table tablename alter column columnname nvarchar(n)
------解决方案--------------------
建议你修改之前先备份。
------解决方案--------------------
--一次性修改 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
------解决方案--------------------
--修改过之后 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 @sql exec (@sql)
------解决方案--------------------
--我自己没有测试过,不敢测试,反正逻辑就是这样的,直接写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)