我正在尝试将列从更改varchar(50)为nvarchar(200)。更改此表的SQL命令是什么?
varchar(50)
nvarchar(200)
查看更多
ALTER TABLE TableName ALTER COLUMN ColumnName NVARCHAR(200) [NULL | NOT NULL]
编辑 如前所述,应该指定NULL / NOT NULL,也请参见Rob的回答。
为什么要指定?有什么好处?我想,我想离开的一切都不必赘述。
@TheincredibleJan太酷了,但是不幸的是,这种方式不起作用。如果发出
ALTER TABLE TableName ALTER COLUMN ColumnName
命令以更改现有列为,[NOT NULL]
而未显式指定它,则它将在[NULL]
之后,因为这是默认设置。仅当您在该列上没有约束和索引时,此方法才有效,否则,您需要删除所有内容并重新创建它,这是繁琐而繁琐的工作,尤其是在该列上有许多外部引用的情况下。例如,当从tinyint更改为int时。
如果您打开了IDE,请当心(例如SSMS)。即使在我正在更改的表上关闭了Designer选项卡的情况下(运行脚本并右键单击表以选择“设计”后),它仍显示旧的数据类型!直到关闭Management Studio中的所有选项卡并再次打开设计视图之后,它才最终显示更新的DataType。非常可怕,因此要小心(它可能是一个已修复的缓存错误,或者一个MS从未修复过)。对于那些想知道为什么在使用Design-View时为什么运行T-SQL的人,我想将DataTypes更改为
SysName
(SSMS不允许)。我对XAMPP中的这些命令不走运。
ALTER TABLE table MODIFY COLUMN column datatype
为我工作。