isnull动态处理所有的动态列 --【叶子】

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

*/

你可能感兴趣的:(sql,object,测试,table,null,insert)