有100多张表,现在要求先判断此表如果有列类型为 decimal (18,2) 或者Float, 则修改为 decimal (24, 5) ,没有此类型的列的话,不更新。 求动态修改所有表的列的 tsql, 另外注意一张表有可能有多个列要改, 谢谢~
------解决思路----------------------
这是我当时用来动态修改每个表的排序规则的脚本,你改一下就可以用了
SELECT 'alter table ' + OBJECT_NAME(OBJECT_ID) + ' alter column ' + a.name
+ ' ' + b.name + '(' + CASE WHEN a.max_length = -1 THEN 'max'
ELSE CONVERT(NVARCHAR(10), a.max_length)
END + ')'
+ ' Collate SQL_Latin1_General_CP1_CI_AS'
FROM sys.columns a
INNER JOIN sys.types b ON a.system_type_id = b.system_type_id
WHERE OBJECT_NAME(OBJECT_ID) NOT LIKE 'sys%'
AND a.collation_name IS NOT NULL
AND a.collation_name <> 'SQL_Latin1_General_CP1_CI_AS'
AND a.system_type_id IN ( 167, 231, 239 )
AND a.user_type_id = b.system_type_id
AND b.user_type_id = b.system_type_id
ORDER BY a.NAME