动态SQL中set与select对变量赋值的影响
来源:互联网 发布:尽管手中空无一物 知乎 编辑:程序博客网 时间:2024/05/21 06:57
在动态SQL中,存在着多种对字符变量赋值的方法.其中set和select使用的朋友最多.对于像我一样的小鸟来说,可能只是会用这两个方法而已,并没有真正理解这两个方法的真正内涵.我个人的理解是这样的:set只是对字符变量的一次赋值,可以是具体的字符串,也可以是一次查询的结果,但是这个结果必须是唯一一条记录且只有一个字段;而select方法功能比较大,它可以把一次查询的多行记录中的某列的值全部赋值到字符串变量(比如@sql)中.在组装@sql变量前,先将表中关心的行全部选择出来,然后系统会自动将这些行内的值链到@sql中,组装字符串.
举个例子:
declare @tb table(a varchar(10) , b varchar(10) )
insert into @tb values('a' , '1' )
insert into @tb values('b' , '2' )
insert into @tb values('c' , '3')
insert into @tb values('d' , '4' )
insert into @tb values('e' , '5' )
declare @sql varchar(1000)
select @sql='A'
select @sql=@sql+','+a
from @tb
--order by a desc
print @sql
为了更好的证明这一点,可以给记录排一下序.如果按照楼主的理解,那么每次就只有一条记录被选择的话,那么排序节的有无,对输出结果没有什么影响才对应该还是"A,a,b,c,d,e",然而结果却是出现了"A,e,d,c,b,a",所以可以证明字符串组装是出现在查询之后的,是查询现将满足条件的记录选择出来,然后再按照从头到尾链接到字符变量@sql中的.
- 动态SQL中set与select对变量赋值的影响
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- SQL存储过程中SELECT与SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- SQL Server存储过程中SELECT与SET对变量赋值的区别
- 存储过程中SELECT与SET对变量赋值
- 存储过程中SELECT与SET对变量赋值
- 存储过程中SELECT与SET对变量赋值
- 存储过程中SELECT与SET对变量赋值
- 存储过程中SELECT与SET对变量赋值
- SELECT 与 SET 对变量赋值的区别
- SELECT 与 SET 对变量赋值的区别
- 前两周的实习---一个堕落者的实习
- javaee层次结构
- 用VC6.0编写Word插件(Office2K、XP、03)
- 移植qtopia
- 用VC6.0编写Word插件(Office2007篇)
- 动态SQL中set与select对变量赋值的影响
- FireFox与IE兼容问题
- JAVA教程-Java语言基础知识
- [解气]韩国SBS被禁止转播奥运开幕式
- jsp中影响编码的属性及其设置(嘿嘿,别人的好文章!)
- 奥运直播
- javascript操作table
- Java学习过程中应该理解的一些重点内容
- 中文与unicode互转