Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Convertendo o tipo de dados Char para Nvarchar


A seleção de INFORMATION_SCHEMA.COLUMNS é uma boa maneira de determinar quais colunas precisam ser convertidas,
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';

Mas não pode ser usado para alterar diretamente o tipo de dados de uma coluna. ALTER TABLE é usado para modificar os tipos de dados da coluna:
ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);

Enquanto estiver nisso, evite usar NVARCHAR(MAX) a menos que seja absolutamente necessário. Certifique-se de que seus tipos de dados sejam dimensionados especificamente para o atributo. Se o seu CHAR colunas já estão dimensionadas corretamente, use o script a seguir para gerar o ALTER TABLE declarações:
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';

Tenha em mente que isso gera apenas as instruções ALTER TABLE, você precisará copiar os resultados e executar em uma nova guia para alterar os tipos de dados.