SQL拼接查询结果的原理?

xeon_pan 2010-12-09 05:36:43

create table #
(id varchar(10))
insert into #
select 'a' union all
select 'b' union all
select 'c' union all
select 'd'

declare @s varchar(100)
select @s=''
select @s=@s+id from #
print @s

abcd


这里面

select @s=@s+id from #

为什么可以拼字符串呢?
我个人理解 这个应该会是分解为 select id from #
和 @s = @s+select id from #
这样的话

select id from #应该返回的是表啊?
...全文
116 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdfdl 2010-12-10
  • 打赏
  • 举报
回复
select @s是赋值语句,不是查询语句,是赋值给@s,所以他的行为本来就应该是这样

The Compute Scalar operator evaluates an expression to produce a computed scalar value. This may then be returned to the user, referenced elsewhere in the query, or both. An example of both is in a filter predicate or join predicate.
王向飞 2010-12-09
  • 打赏
  • 举报
回复
把每一行的ID都赋给@s
下一行又把@s+ID再赋@s 直到结束
viqn7qdnt 2010-12-09
  • 打赏
  • 举报
回复
嗯,LZ要理解sql语句的运行思路
水妹妹 2010-12-09
  • 打赏
  • 举报
回复
这个要理解了sql select 语句的原理,就好理解了

你把select 语句原子化,就是先查第一条语句,得到一个id --》@s
再查第2句,得到一个id --》@s(第1个id+第2个id)
。。。

但是这个过程你看不到

34,838

社区成员

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

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