【问题标题】:Altering column size in SQL Server更改 SQL Server 中的列大小
【发布时间】:2012-04-25 15:46:39
【问题描述】:

如何将employee表中salary列的列大小从numeric(18,0)更改为numeric(22,5)

【问题讨论】:

    标签: sql sql-server database tsql alter-table


    【解决方案1】:
    alter table Employee alter column salary numeric(22,5)
    

    【讨论】:

      【解决方案2】:
      ALTER TABLE [Employee]
      ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
      

      【讨论】:

      • 要小心,如果您要更改非常大的数据表中的列。您可能会导致崩溃(无论如何在我的环境中)。
      • 同样重要的是,如果列具有属性NOT NULL,则必须在查询中提及,否则默认情况下会将其设置为NULLALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
      • 如果您在该列上有索引,则必须删除它,然后执行更改表代码,然后再次创建索引
      【解决方案3】:
      ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
      

      【讨论】:

        【解决方案4】:

        运行ALTER COLUMN 而不提及属性NOT NULL 将导致列被更改为可为空,如果它已经不是。因此,您需要首先检查该列是否可以为空,如果不是,请指定属性NOT NULL。或者,您可以使用以下语句预先检查列的可空性并运行具有正确属性的命令。

        IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
            ALTER TABLE [Employee]
                ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
        ELSE        
            ALTER TABLE [Employee]
                ALTER COLUMN [Salary] NUMERIC(22,5) NULL
        

        【讨论】:

          【解决方案5】:

          右击要修改的表-->选择“设计”-->修改“数据类型”列的值如下图:

          然后保存以完成对表格设计的更改。

          【讨论】:

          • 正确检查可能是您遗漏了一些步骤。
          • 工具 -> 选项... / >设计器 -> 表和数据库设计器 -- 取消选中“防止保存需要重新创建表的更改”
          • 对于大多数事情,我更喜欢脚本。但对于列更改,我喜欢 UI。不必记住检查 NOT NULL 或任何计算或任何其他列属性。只需单击保存(在 SSMS 中将设置更改为 @7anner 注释后)。
          • 这不是正确的解决方案,使用 Design 更改 Table 数据类型将导致删除并重新创建表,您需要使用 alter ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22, 5) 非空
          【解决方案6】:

          可以在这里找到有趣的方法:How To Enlarge Your Columns With No Downtime by spaghettidba

          如果您尝试使用直接的“ALTER TABLE”命令来扩大此列,您将不得不等待 SQLServer 遍历所有行并写入新的数据类型

          ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;
          

          为了克服这种不便,您的桌子可以服用一种神奇的列扩大药丸,它被称为行压缩。 (...) 使用行压缩,您的固定大小的列只能使用适合实际数据的最小数据类型所需的空间。

          当表在ROW 级别压缩时,ALTER TABLE ALTER COLUMN 是仅元数据操作。

          【讨论】:

            【解决方案7】:

            您可以使用ALTER 命令修改表架构。

            修改列大小的语法是

            ALTER table table_name modify COLUMN column_name varchar (size);
            

            【讨论】:

              【解决方案8】:

              ALTER TABLE "Employee" MODIFY ("Salary" NUMERIC(22,5));

              【讨论】:

                【解决方案9】:

                对于数据库的 Oracle:

                ALTER TABLE table_name MODIFY column_name VARCHAR2(255 CHAR);

                【讨论】:

                  【解决方案10】:

                  在这种情况下,您需要使用 ALTER TABLE 语句来增加列大小。

                  这是它的语法

                  ALTER TABLE 表名 修改列名 varchar(new_length);

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-09-11
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-06-20
                    • 2017-05-19
                    • 1970-01-01
                    相关资源
                    最近更新 更多