一个小问题,100分相送,谢谢大家。

ezlz 2003-12-25 05:33:38
有如下表

Id sp
-------
1 苹果
2 桔子
3 香蕉

有什么sql可以得到诸如 "苹果 桔子 香蕉" 的结果?没有条件的限制,在sp下有多少就得到多少,但结果只能在一个字段中。

谢谢啦!
...全文
52 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy_0325 2003-12-26
  • 打赏
  • 举报
回复
select distinct sp from tablename
victorycyz 2003-12-26
  • 打赏
  • 举报
回复
结果只能在一个字段中。
------------------------------
这是一个有趣的现象。大家都能把这句话理解成“结果放到一行中”。而不会理解成:
select sp from tablename
hglhyy 2003-12-25
  • 打赏
  • 举报
回复
同意!
gmlxf 2003-12-25
  • 打赏
  • 举报
回复
注意:
left(@x,len(@x)-1)的写法会在没有记录的时候出错。
当然你可以判断@x是否等于''

你可以使用substring()就不需要做判断都可以了,代码如下:
declare @x varchar(8000)
set @x=''
select @x=@x + ' ' + sp from @t order by id
set @x=substring(@x,2,8000)
select @x

有不用存储过程的吗?因为是在程序中自动组合sql语句。
----
存储过程是可以,还是函数方便,写法可以是:
create function test()
returns varchar(8000)
as
begin
declare @x varchar(8000)
set @x=''
select @x=@x + ' ' + sp from @t order by id
set @x=substring(@x,2,8000)
return @x
end
-- 前台调用:
sql = "select dbo.test()"


txlicenhe 2003-12-25
  • 打赏
  • 举报
回复
create function test()
returns varchar(8000)
as
begin
declare @x varchar(8000)
set @x=''
select @x=@x+ ' '+ sp from table order by id
return @x
end

然后就可以
select dbo.test()
realgz 2003-12-25
  • 打赏
  • 举报
回复
对如果是空格要加一句
set @x=left(@x,len(@x))
是*要加
set @x=left(@x,len(@x)-1)
realgz 2003-12-25
  • 打赏
  • 举报
回复
declare @x varchar(8000)
set @x=''
select @x=@x+ '*'+ sp from table order by id
select @x
--另:一句话的恐怕没有
ezlz 2003-12-25
  • 打赏
  • 举报
回复
有不用存储过程的吗?因为是在程序中自动组合sql语句。

另如果需要指定分隔符如‘*’该如何求解?
erigido 2003-12-25
  • 打赏
  • 举报
回复
declare @t table(id int,sp nvarchar(20))
insert into @t select 1,'苹果' union all select 2,'香蕉' union all select 3,'桔子'
select * from @t

declare @c varchar(8000)
set @c=''
select @c = @c + ' '+sp from @t
select @c
sdhdy 2003-12-25
  • 打赏
  • 举报
回复
declare @x varchar(8000)
set @x=''
select @x=@x+sp+' ' from table order by id
set @x=left(@x,len(@x)-1)
select @x
sdhdy 2003-12-25
  • 打赏
  • 举报
回复
realgz(realgz)的就行!
mjhnet 2003-12-25
  • 打赏
  • 举报
回复
严重同意realgz(realgz)
realgz 2003-12-25
  • 打赏
  • 举报
回复
declare @x varchar(8000)
set @x=''
select @x=@x+ ' '+ sp from table order by id
select @x
ezlz 2003-12-25
  • 打赏
  • 举报
回复
up

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧