sql - SQL Server 将空值插入非空列时如何设置默认值?

标签 sql sql-server insert ssms default

我有两个表t1t2。两者都有 idname 列。 t1 的 name 列定义为非空,并且默认值为“Peter”。

我想将 t2 中的所有值插入到我的 t1 表中。但我在 t2 表中有一些空值。当我尝试插入值时:

Insert into t1 
   select * 
   from t2;

它抛出此错误:

Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'Name', table 'T1'; column does not allow nulls.

当我们尝试插入null值时,是否有可能为该列设置默认值。

最佳答案

第一个解决方案,

   insert into t1
    select id,isnull(name,'Peter') from t2

第二种解决方案

ALTER TABLE T1 ALTER COLUMN name varchar(255) NULL

insert into t1
select id,name from t2

ALTER TABLE T1 ALTER COLUMN name varchar(255) NOT NULL

关于sql - SQL Server 将空值插入非空列时如何设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36735045/

相关文章:

php - 在sql表中插入html

sql - 对两个表进行采样后进行连接

php - Laravel:在 PDO 对象上指定了不受支持的属性。 Ubuntu 上的 MSSQL

sql-server - 将 Entity Framework 连接字符串转换为SQL Server Express

php - 使用InnoDB引擎在mysql中插入单行时是否需要事务?

sql - INSERT into table 和 UPDATE 另一个表中的外键(Sql Server 2008)

sql - 跨实例导入/导出 Sql Server 2005 用户/权限的简便方法?

sql - 在一天/月/周结束时获取值的总和

SQL 十进制值作为整数插入

php - 随机数插入 mySQL 不起作用