--引用论坛上一兄弟的例子
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+name --正确情况的使用
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql第二种
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000declare @sql varchar(8000)
set @sql=‘’
select @sql=@sql+name
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql1. 这两种情况区别在于结果之间 多了几个逗号区分(ISNULL中是如何实现的,能详细点最好)
(第一种情况的结果)bmid,bmname,hpmc,username
其实这个问题好象跟是由第2个问题引起的。2. 假如select @sql=@sql+name换成 select @sql=@sql+name 的话就只能取得一个值了(当有多值时,select只能返回结果中的最后一个值,这个我知道),而select @sql=@sql+name为什么能返回多个值,难道select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢2.
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+name --正确情况的使用
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql第二种
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000declare @sql varchar(8000)
set @sql=‘’
select @sql=@sql+name
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql1. 这两种情况区别在于结果之间 多了几个逗号区分(ISNULL中是如何实现的,能详细点最好)
(第一种情况的结果)bmid,bmname,hpmc,username
其实这个问题好象跟是由第2个问题引起的。2. 假如select @sql=@sql+name换成 select @sql=@sql+name 的话就只能取得一个值了(当有多值时,select只能返回结果中的最后一个值,这个我知道),而select @sql=@sql+name为什么能返回多个值,难道select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢2.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货