我的SQL Server数据库中有超过80个表。我有超过500列。我想改变一些类型的列以释放空间。
我编写此脚本只是为了查看nvar
和nch
初学者的列。
WHILE (SELECT *
FROM DATA.INFORMATION_SCHEMA.COLUMNS
WHERE (DATA_TYPE LIKE 'nvar%' OR DATA_TYPE LIKE 'nch%'))
--OR DATA_TYPE LIKE 'float%')
BEGIN
PRINT 'change type in SCHEMA';
END
我应该添加到这个脚本或者我写另一个脚本来自动转换类型。
有人可以帮助我,我该怎么办?
非常感谢。
答案 0 :(得分:1)
如果您考虑了评论者提出的问题,这可能就是您要找的内容。该脚本将根据您引用的表的数据准备供您使用的SQL语句。
请仔细检查其正确性。此外,我假设你想要新行和GO
,但如果你不想要它们,你可以轻松删除它们。
SELECT
AlterSql = CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' ALTER COLUMN ', COLUMN_NAME, ' ', SUBSTRING(DATA_TYPE, 2, LEN(DATA_TYPE)), '(', CHARACTER_MAXIMUM_LENGTH, ') ', CASE IS_NULLABLE WHEN 'YES' THEN 'NULL' WHEN 'NO' THEN 'NOT NULL' ELSE 'ERROR' END, CHAR(13), CHAR(10), 'GO')
, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE IN ('nchar', 'nvarchar')