SQL问题(100分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个表中的所有为NULL的字段真入default值,
请问如何写SQL语句呢?或者如何操作呢?
 
假设字段为colvar,default 值为0
update table set colvar = 0 where colvar is null
 
可以用以下的命令语句实现:
update 表名 set 字段名1='default'[,字段名2='default'] where 字段名 IS NULL
 
linyp2000 is all right.
 
问题是我的表共有四十几个字段,一个一个判断太麻烦了,
有没有办法用一个SQL语句组实现?
 
做循环重新插入吧
 

fengweizh的可以实现,只不过要把引号去掉

update 表名 set 字段名1=default[,字段名2=default] where 字段名 IS NULL
 
呵呵,一个isnull函数就可以了。
你查下sql server 里的帮助,有例子。
 
alter table table_name (field_name default value)
 
可以用ALTER TABLE语句来实现,
alter table table_name modify filed_name default default_value;
这样的话,不仅仅现在的NULL字段有缺省值,以后的记录中也有缺省值了。
 
问题就是我四十几个field_name,一个一个处理是十分烦锁的,
还有没有什么办法一次性处理?
 
在用SQL Server进行数据迁移时,会把原有的空字符串转变为NULL,
我的解决方法是用一个循环来做
for i := 0 to Query.fieldcount - 1 do
begin
case Query.fields.datatype of
ftString:
begin
Query2.sql.text := 'update table1 set '+Query.fields.fieldname
+'='''' where '+Query.fields.fieldname+' is null';
Query2.execsql;
end;
ftInteger:
......
end;
end;
(我是根据印象写的,语法没有好好检查)
 
用游标逐行、逐字段的找
两个循环,很好实现的
 
四十几各字段很快的。这不是问题。
关键是以后设计时要想好。
 
刘素杰的思路是对了(稍微改改就可满足你的需要),一个循环搞定!
 
多人接受答案了。
 
后退
顶部