Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Conversion du type de données Char en Nvarchar

La sélection à partir de INFORMATION_SCHEMA.COLUMNS est un bon moyen de déterminer quelles colonnes doivent être converties,

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';

Mais il ne peut pas être utilisé pour modifier directement le type de données d'une colonne. ALTER TABLE est utilisé pour modifier les types de données des colonnes :

ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);

Pendant que vous y êtes, évitez d'utiliser NVARCHAR(MAX) sauf si c'est absolument nécessaire. Assurez-vous que vos types de données sont dimensionnés spécifiquement pour l'attribut. Si votre CHAR les colonnes sont déjà dimensionnées correctement, utilisez le script suivant pour générer la ALTER TABLE déclarations :

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';

Gardez à l'esprit que cela ne génère que les instructions ALTER TABLE, vous devrez copier les résultats et exécuter dans un nouvel onglet pour modifier les types de données.