在动态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中的.

本文来自CSDN博客,转载出处:http://blog.csdn.net/acupofnescafe/archive/2008/08/06/2774676.aspx

转载于:https://www.cnblogs.com/acis_/archive/2009/07/11/1520842.html

[网摘]动态SQL中set与select对变量赋值的影响相关推荐

  1. 博图如何读取mysql数据_博途使用小结:从SQL中读取数据并给变量赋值

    1.建立内部变量TON_Report,VF01_Runtime,JC01_Runtime,VF05_Runtime,数据类型为Real,长度为2 2.建立查询按钮,点击查询按钮时读取SQL中的数据并赋 ...

  2. 长sql和短sql加java区别_Mybatis下动态sql中##和$$的区别讲解

    一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: select * from user ...

  3. mybatis动态sql中where标签的使用

    where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...

  4. ORACLE 动态SQL中的多个单引号

    今天在项目中遇到动态拼sql的语句, 语句如下: v_sql := 'update Table_Test t ' ||' set t.field1 = ''' || 变量1 || ''','  -- ...

  5. sql动态sql给变量复值_在动态SQL中使用变量

    sql动态sql给变量复值 Before we delve into these SQL concepts, note that I like to do all my development in ...

  6. oracle 更新sysdate,如何使用sysdate更新日期列,包括动态sql中的时间戳

    Lalit Kumar .. 9 我已经尝试使用to_date(to_char(sysate)),但缺少时间戳 这样做是没有意义的. 为什么PL/SQL执行这么简单的任务.在纯SQL中执行此操作.UP ...

  7. sql中 set 和select 的区别

    SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT. 对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们 并没有注意,其实这 ...

  8. python标志变量_Python 中的 global 标识对变量作用域的影响

    global 标识用于在函数内部,修改全局变量的值. 我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域: 变量定义在全局作用域,那就是全局变量. 变量在函数中定义,并且加了 glo ...

  9. 动态SQL中变量赋值

    在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...

最新文章

  1. 字节跳动算法工程师总结:java接口实验报告总结
  2. C++对象模型详解(上)
  3. 服务器推送系统安装,搭建PXE服务器,推送安装linux系统
  4. Java面向对象(四)final关键字
  5. arm 架构_ARM发布A78增强版大核架构:性能怪兽
  6. C++继承中关于子类构造函数的写法
  7. 【前端】网页布局基础
  8. din算法 代码_从啥也不会的小白,如何成为合格的算法工程师?
  9. 移植MyEclipsenbsp;Web项目到Ecli…
  10. 第三集 怪物学院 第十六章
  11. 【收藏】B站科普硬核节目
  12. VMware+ubuntu+win10笔记本实现笔记本连接WIFI且ubuntu既可以上网又能连接开发板
  13. 【20221205】Windows系统反斜杠(倒斜杠 \ )和 Linux系统正斜杠(斜杠 / )
  14. 身份验证绕过漏洞分析
  15. 服务器中imm的作用,联想X系列服务器IMM2(集成管理模块)基本操作
  16. python爬虫笔记一:爬取豆瓣中指定的明星所有图片
  17. 视频质量诊断视频质量分析
  18. tensorflow英语怎么读_tensorflow怎么读
  19. 淘宝开放平台应用申请?淘宝开放平台API申请?
  20. 习题4-3 UVA220黑白棋(WA)

热门文章

  1. caffemodel权值可视化(转)
  2. php setjmp longjmp,我本来以为setjmp和longjmp的实现很复杂【附代码】
  3. Beyond Compare 4
  4. android开发常用技术,[转载]Android开发常用调试技术记录
  5. LSI_阵列卡操作手册
  6. 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅
  7. react文字滚动插件_【赠书】Preact(React)核心原理详解
  8. Mybatis的案例和接口代理开发和模板配置
  9. 在deepin中安装docker
  10. mysql中生成列与JSON类型的索引