我的SQL数据库中有一张表,大概有一百多个字段,五万多条记录,怎样可以一次性将表中的所有NULL替换成空?
如果用 update 表名 set 列名 = '' where 列名 is Null 这样一个字段一个字段的替换,会疯掉的。。。
请大伙帮帮忙!
SQL,怎样可以一次性将表中的所有NULL替换成空?
答案:2 悬赏:10
解决时间 2021-02-03 06:31
- 提问者网友:娇妻失忆
- 2021-02-02 23:11
最佳答案
- 二级知识专家网友:佛说妍妍很渣
- 2021-02-03 00:50
大概想法是通过利用sys.columns这个系统表,然后组合语句之后执行。
declare @cmd varchar(MAX)
declare @column varchar(MAX)
declare @index int
while 1 = 1
select top 1 @column = name, @index = column_id from sys.columns where column_id > @index and object_name(object_id) = 'Table_name'
if @column is null
break
select @com = 'update Table_name set ' + @column + ' = '''' where ' + @column + ' is null'
exec(@cmd)
end 里面的Table_name就是你的表名
declare @cmd varchar(MAX)
declare @column varchar(MAX)
declare @index int
while 1 = 1
select top 1 @column = name, @index = column_id from sys.columns where column_id > @index and object_name(object_id) = 'Table_name'
if @column is null
break
select @com = 'update Table_name set ' + @column + ' = '''' where ' + @column + ' is null'
exec(@cmd)
end 里面的Table_name就是你的表名
全部回答
- 1楼网友:甜野猫
- 2021-02-03 01:14
这个一般无法做到,
比如,数字、日期类型的数据,也可以存成 null, 但是却无法存成 空字符串 ''
再比如oracle,一般来说, 空字符串 '' 在数据库中 都存成 null
当然,你要是只改 字符 列,
可以,循环取出 所有表的所有列,然后 用动态sql执行:
update tab_a set col_x = '' where col_x is null;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯