SQL修改指定数据库的表数据类型【如将表中所有varchar类型修改为nvarchar】
2012-08-15 15:32
591 查看
declare @num int,@tableName varchar(50),@columnName varchar(50),
@typeName varchar(50),@max_length int,@str varchar(500) = ''
declare cur_table cursor for
with cte(num,tableName,columnName,typeName,max_length) as (
select row_number() over(order by ia.name asc) 'Num' ,
ia.name 'tableName',ib.name 'columnName',
ic.name 'typeName',ib.max_length
from test.sys.objects ia
inner join test.sys.columns ib
on ia.object_id = ib.object_id
inner join test.sys.types ic
on ib.user_type_id = ic.user_type_id
where ia.type ='U' and ia.name = 'abc'
) select num,tableName,columnName,typeName,max_length from cte;
open cur_table
fetch next from cur_table into @num,@tableName,
@columnName,@typeName,@max_length
while(@@FETCH_STATUS = 0)
begin
if(@typeName = 'varchar')
begin
set @str = '
alter table '+@tableName+' alter column
'+@columnName+' nvarchar('+str(@max_length)+')
'
exec(@str);
end
fetch next from cur_table into @num,@tableName,
@columnName,@typeName,@max_length
end
close cur_table;
deallocate cur_table;
@typeName varchar(50),@max_length int,@str varchar(500) = ''
declare cur_table cursor for
with cte(num,tableName,columnName,typeName,max_length) as (
select row_number() over(order by ia.name asc) 'Num' ,
ia.name 'tableName',ib.name 'columnName',
ic.name 'typeName',ib.max_length
from test.sys.objects ia
inner join test.sys.columns ib
on ia.object_id = ib.object_id
inner join test.sys.types ic
on ib.user_type_id = ic.user_type_id
where ia.type ='U' and ia.name = 'abc'
) select num,tableName,columnName,typeName,max_length from cte;
open cur_table
fetch next from cur_table into @num,@tableName,
@columnName,@typeName,@max_length
while(@@FETCH_STATUS = 0)
begin
if(@typeName = 'varchar')
begin
set @str = '
alter table '+@tableName+' alter column
'+@columnName+' nvarchar('+str(@max_length)+')
'
exec(@str);
end
fetch next from cur_table into @num,@tableName,
@columnName,@typeName,@max_length
end
close cur_table;
deallocate cur_table;
相关文章推荐
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
- 修改所有用户表的字段 , 只替换char varchar nchar nvarchar 类型
- oracle 中 blob类型数据修改(从file保存到数据库,从java.sql.Blob 保存到oracle.sql.BLOB )
- SQL 读取数据库中所有数据表的所有约束类型名称和默认值
- 用封装的方法实现从文件夹名下所有的指定类型文件数据导入到数据库
- 显示数据库所有表名,字段名,数据类型的sql语句 - 广州网站建设
- SQL获取指定数据表所有字段类型和精度脚本
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
- SQL 读取数据库中所有数据表的所有约束类型名称和默认值
- 去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
- SQL中数据类型char/varchar/nvarchar/nchar/text/ntext的区别
- SQL获取指定数据表所有字段类型和精度脚本
- SQL 读取数据库中所有数据表的所有约束类型名称和默认值
- sql_varchar nvarchar char nchar 等数据类型的区别
- 从文件夹目录下导入所有指定文件类型的数据内容到数据库表
- sql 数据库中 查询所有的数据表,字段,数据类型,长度