isnull动态处理所有的动态列
-- =================================
-- Author:<Maco Wang>
-- CreateDate:2009-04-03 13:15:35
-- Description:<处理一个表的所有为空列,列是动态添加后的不固定列>
-- =================================
create procedure getnotnull
(
@tablename varchar(100), --表名
@Na varchar(20) --替换null的字符
)
as
begin
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',isnull(cast('+name+' as varchar),'+@Na+') as '+name
from syscolumns where id=object_id(@tablename) order by colid
set @sql=stuff(@sql,1,1,'')
--print @sql
exec('select '+@sql+' from '+@tablename)
end
--测试数据
go
create table testtb(id int ,nn varchar(20))
insert into testtb
select null,null union all
select null,'a' union all
select 2,null
--处理非空列
go
exec getnotnull 'testtb','0'
go
drop table testtb
/*运行结果
id nn
------------------------------ ------------------------------
0 0
0 a
2 0
*/