Избирането от INFORMATION_SCHEMA.COLUMNS е добър начин да определите кои колони трябва да бъдат преобразувани,
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';
Но не може да се използва за директна промяна на типа данни на колона. ПРОМЕНЯВАНЕ НА ТАБЛИЦА се използва за модифициране на типове данни в колони:
ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);
Докато сте там, избягвайте да използвате NVARCHAR(MAX)
освен ако не е абсолютно наложително. Уверете се, че вашите типове данни са оразмерени специално за атрибута. Ако вашият CHAR
колоните вече са оразмерени правилно, използвайте следния скрипт за генериране ALTER TABLE
изявления:
SELECT 'ALTER TABLE ' +
QUOTENAME(TABLE_SCHEMA) + '.' +
QUOTENAME(TABLE_NAME) +
' ALTER COLUMN ' +
QUOTENAME(COLUMN_NAME) +
' NVARCHAR(' +
CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(4)) + ');'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'char';
Имайте предвид, че това генерира само изразите ALTER TABLE, ще трябва да копирате резултатите и да ги изпълните в нов раздел, за да промените типовете данни.