Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Conversione del tipo di dati Char in Nvarchar

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.