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

Konvertering af datatype Char til Nvarchar

At vælge fra INFORMATION_SCHEMA.COLUMNS er en god måde at bestemme, hvilke kolonner der skal konverteres,

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

Men det kan ikke bruges til direkte at ændre en kolonnes datatype. ÆNDRINGSTABEL bruges til at ændre kolonnedatatyper:

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

Mens du er i gang, skal du undgå at bruge NVARCHAR(MAX) medmindre det er absolut nødvendigt. Sørg for, at dine datatyper er dimensioneret specifikt til attributten. Hvis din CHAR kolonner allerede har den rigtige størrelse, brug følgende script til at generere ALTER TABLE udsagn:

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

Husk, at dette kun genererer ALTER TABLE-sætningerne. Du skal kopiere resultaterne og udføre i en ny fane for at ændre datatyperne.



  1. Hvad er den bedste måde at indlæse en enorm mængde data i PostgreSQL?

  2. ORA-22905 - når du forespørger en tabeltype med en select-sætning

  3. Udfør SQL Server-scripts

  4. Hvordan kopierer man csv-datafil til Amazon RedShift?