改变一个varchar列的最大长度?

我试图在不丢失内容的情况下将varchar列的长度从255个字符更新为500。我之前已经删除并重新创建了表,但我从来没有接触过alter语句,这是我认为我需要使用的。我在这里找到了文档:ALTER TABLE (Transfact-SQL),但我不能让它的头或尾。

到目前为止,我有以下(不幸的是,基本上没有):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

我该怎么做呢?有没有更好的关于这条语句的文档(我搜索了一些示例语句,但一无所获)?

473352 次浏览

你需要

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

但如果需要,请记住显式指定NOT NULL

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

如果你不指明,如下所示…

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

然后该列将默认为允许空值,即使它最初定义为NOT NULL。即省略ALTER TABLE ... ALTER COLUMN中的规范总是被视为。

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

此行为不同于用ALTER TABLE(或在CREATE TABLE时间)创建的新列。默认的可空性取决于ANSI_NULL_DFLT设置。

使用ALTER增加列的大小不会丢失任何数据:

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3 varchar(500)

正如@Martin指出的,记得显式指定NULL | NOT NULL

对于MySQL或dbms而不是MSSQL,你可能需要使用modify而不是alter作为列值:

ALTER TABLE `table name`
modify COLUMN `column name` varchar("length");

使用IntelliJ中的Maria-DB和DB-Navigator工具,修改列代替改变列为我工作

毫无疑问,对我有用的是

ALTER TABLE `your_table` CHANGE `property` `property`
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);

我使用Oracle SQL开发工具和@anonymous的答案是最接近的,但一直收到语法错误,直到我将查询编辑为此。我将alter更改为modify,因此没有必要将column_name定义为column

这对我在db2中是有效的:

alter table "JOBS"  alter column "JOB_TITLE" set  data type varchar(30);

作为一种替代方法,您可以保存旧数据并使用新参数创建一个新表。

see image

在SQL Server Management Studio: "your database"=比;任务=比;generatescripts =比;选择特定的数据库对象=>“你的table"=比;先进=比;脚本的数据类型- schema和data =>生成

就我个人而言,我是这么做的。

对于MariaDB,使用修改列:

ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR (500);

它会起作用的。

在Oracle SQL Developer中

修改转矩VARCHAR(100)