Selezionare da INFORMATION_SCHEMA.COLUMNS è un buon modo per determinare quali colonne devono essere convertite,
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';
Ma non può essere utilizzato per modificare direttamente il tipo di dati di una colonna. ALTER TABLE viene utilizzato per modificare i tipi di dati delle colonne:
ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);
Già che ci sei, evita di usare NVARCHAR(MAX)
a meno che non sia assolutamente necessario. Assicurati che i tipi di dati siano dimensionati in modo specifico per l'attributo. Se il tuo CHAR
le colonne sono già dimensionate correttamente, utilizza il seguente script per generare il ALTER TABLE
dichiarazioni:
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';
Tieni presente che questo genera solo le istruzioni ALTER TABLE, dovrai copiare i risultati ed eseguirli in una nuova scheda per modificare i tipi di dati.