Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Konvertieren des Datentyps Char in Nvarchar

Die Auswahl aus INFORMATION_SCHEMA.COLUMNS ist eine gute Methode, um zu bestimmen, welche Spalten konvertiert werden müssen,

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

Aber es kann nicht verwendet werden, um den Datentyp einer Spalte direkt zu ändern. ALTER TABLE wird verwendet, um Spaltendatentypen zu ändern:

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

Wenn Sie schon dabei sind, vermeiden Sie die Verwendung von NVARCHAR(MAX) es sei denn, es ist absolut notwendig. Stellen Sie sicher, dass Ihre Datentypen speziell für das Attribut dimensioniert sind. Wenn Ihr CHAR Spalten bereits die richtige Größe haben, verwenden Sie das folgende Skript zum Generieren die ALTER TABLE Anweisungen:

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

Denken Sie daran, dass dies nur die ALTER TABLE-Anweisungen generiert, Sie müssen die Ergebnisse kopieren und in einem neuen Tab ausführen, um die Datentypen zu ändern.