sql语句添加一列并且设置默认值为0

fwqkey 2008-12-26 08:40:16
我用游标动态添加列并且设置默认值,不过好像直接写default 0是不行的,查询出来没有值的还是为空,没有显示0
下面是修改列的一句代码。。
  ALTER TABLE #Temp Add ['+Cast(Day(@Date) As varchar)+'_发出] int default 0

请问要怎么样设置默认值??
...全文
5143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tengkongxx 2011-09-21
  • 打赏
  • 举报
回复
當你再插入數據是就將它設置為0,
但是你查看以前值依舊是null。
中国风 2008-12-26
  • 打赏
  • 举报
回复
数据已存在是不能这样用

加上with values就行了
use tempdb
go
create table #Temp(ID int)
insert #Temp select 1
insert #Temp select 2
go
declare @Date datetime,@s nvarchar(1000)
set @Date=getdate()
set @s='ALTER TABLE #Temp Add ['+Cast(Day(@Date) As varchar)+'_发出] int default 0 with values'--加上with values
exec(@s)

select * from #Temp
/*
ID 26_发出
----------- -----------
1 0
2 0

(2 行受影响)


*/


liangCK 2008-12-26
  • 打赏
  • 举报
回复
如果就是用ISNULL()去判断是否为NULL,是就取0的话.那把我的话都忽略掉吧.
liangCK 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fwqkey 的回复:]
引用 2 楼 liangCK 的回复:
SQL codeCREATE TABLE tb(ID INT,data varchar(10))

DECLARE @SQL VARCHAR(1000)

SET @SQL='ALTER TABLE tb ADD ['+CAST(DAY(GETDATE()) AS VARCHAR)+'_发出] INT DEFAULT 0'
EXEC(@SQL)

INSERT tb(id,data) VALUES(1,'aa')

SELECT * FROM tb

DROP TABLE tb


貌似你这跟我说的没什么区别呀。
我这样插入列后是要动态更新这列的数据的(从别的表里取值,有好几个表连接…
[/Quote]

这样就是设置是默认值..

而你说到的从另的表里.几个表的连接..如果你得到的是为空(NULL)..
那就说你已经显式的把NULL插入到列当中了..
都已经把值插入到列当中了.还谈什么默认值.
fcuandy 2008-12-26
  • 打赏
  • 举报
回复
insert #temp(f1,f2) select isnull(f1,0),isnull(f2,0) from otherTable
fwqkey 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liangCK 的回复:]
SQL codeCREATE TABLE tb(ID INT,data varchar(10))

DECLARE @SQL VARCHAR(1000)

SET @SQL='ALTER TABLE tb ADD ['+CAST(DAY(GETDATE()) AS VARCHAR)+'_发出] INT DEFAULT 0'
EXEC(@SQL)

INSERT tb(id,data) VALUES(1,'aa')

SELECT * FROM tb

DROP TABLE tb
[/Quote]

貌似你这跟我说的没什么区别呀。
我这样插入列后是要动态更新这列的数据的(从别的表里取值,有好几个表连接的,如果取值为空的话就为0),并不是直接插入值
不知道怎么样设置默认值。。开始我也以为这样设置可以,but in fact ,not..
liangCK 2008-12-26
  • 打赏
  • 举报
回复
CREATE TABLE tb(ID INT,data varchar(10))

DECLARE @SQL VARCHAR(1000)

SET @SQL='ALTER TABLE tb ADD ['+CAST(DAY(GETDATE()) AS VARCHAR)+'_发出] INT DEFAULT 0'
EXEC(@SQL)

INSERT tb(id,data) VALUES(1,'aa')

SELECT * FROM tb

DROP TABLE tb
nalnait 2008-12-26
  • 打赏
  • 举报
回复
你那个设置是插入的时候默认是0,再读取
你直接读取肯定没数据了

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧