SQL Server - script to update database columns from varchar to nvarchar if not already nvarchar

前端 未结 5 1769
南笙
南笙 2020-12-16 19:02

I am in a situation where I must update an existing database structure from varchar to nvarchar using a script. Since this script is run everytime a configuration applicati

5条回答
  •  无人及你
    2020-12-16 19:23

    The issue with Josef's answer is that it would change NOT NULL fields to NULL after executing the queries. The following manipulation fixes it:

    SELECT cmd = 'alter table [' + c.table_schema + '].[' + c.table_name 
     + '] alter column [' + c.column_name + '] nvarchar('
     +CASE WHEN CHARACTER_MAXIMUM_LENGTH<=4000
           THEN CAST(CHARACTER_MAXIMUM_LENGTH as varchar(10)) ELSE 'max' END+')' 
     + CASE WHEN IS_NULLABLE='NO' THEN ' NOT NULL' ELSE '' END,*
    FROM information_schema.columns c
    WHERE c.data_type='varchar' 
    ORDER BY CHARACTER_MAXIMUM_LENGTH desc
    

    Credits to Igor's answer

提交回复
热议问题