[网摘]动态SQL中set与select对变量赋值的影响
在动态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对变量赋值的影响相关推荐
- 博图如何读取mysql数据_博途使用小结:从SQL中读取数据并给变量赋值
1.建立内部变量TON_Report,VF01_Runtime,JC01_Runtime,VF05_Runtime,数据类型为Real,长度为2 2.建立查询按钮,点击查询按钮时读取SQL中的数据并赋 ...
- 长sql和短sql加java区别_Mybatis下动态sql中##和$$的区别讲解
一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: select * from user ...
- mybatis动态sql中where标签的使用
where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...
- ORACLE 动态SQL中的多个单引号
今天在项目中遇到动态拼sql的语句, 语句如下: v_sql := 'update Table_Test t ' ||' set t.field1 = ''' || 变量1 || ''',' -- ...
- sql动态sql给变量复值_在动态SQL中使用变量
sql动态sql给变量复值 Before we delve into these SQL concepts, note that I like to do all my development in ...
- oracle 更新sysdate,如何使用sysdate更新日期列,包括动态sql中的时间戳
Lalit Kumar .. 9 我已经尝试使用to_date(to_char(sysate)),但缺少时间戳 这样做是没有意义的. 为什么PL/SQL执行这么简单的任务.在纯SQL中执行此操作.UP ...
- sql中 set 和select 的区别
SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT. 对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们 并没有注意,其实这 ...
- python标志变量_Python 中的 global 标识对变量作用域的影响
global 标识用于在函数内部,修改全局变量的值. 我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域: 变量定义在全局作用域,那就是全局变量. 变量在函数中定义,并且加了 glo ...
- 动态SQL中变量赋值
在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...
最新文章
- 字节跳动算法工程师总结:java接口实验报告总结
- C++对象模型详解(上)
- 服务器推送系统安装,搭建PXE服务器,推送安装linux系统
- Java面向对象(四)final关键字
- arm 架构_ARM发布A78增强版大核架构:性能怪兽
- C++继承中关于子类构造函数的写法
- 【前端】网页布局基础
- din算法 代码_从啥也不会的小白,如何成为合格的算法工程师?
- 移植MyEclipsenbsp;Web项目到Ecli…
- 第三集 怪物学院 第十六章
- 【收藏】B站科普硬核节目
- VMware+ubuntu+win10笔记本实现笔记本连接WIFI且ubuntu既可以上网又能连接开发板
- 【20221205】Windows系统反斜杠(倒斜杠 \ )和 Linux系统正斜杠(斜杠 / )
- 身份验证绕过漏洞分析
- 服务器中imm的作用,联想X系列服务器IMM2(集成管理模块)基本操作
- python爬虫笔记一:爬取豆瓣中指定的明星所有图片
- 视频质量诊断视频质量分析
- tensorflow英语怎么读_tensorflow怎么读
- 淘宝开放平台应用申请?淘宝开放平台API申请?
- 习题4-3 UVA220黑白棋(WA)
热门文章
- caffemodel权值可视化(转)
- php setjmp longjmp,我本来以为setjmp和longjmp的实现很复杂【附代码】
- Beyond Compare 4
- android开发常用技术,[转载]Android开发常用调试技术记录
- LSI_阵列卡操作手册
- 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅
- react文字滚动插件_【赠书】Preact(React)核心原理详解
- Mybatis的案例和接口代理开发和模板配置
- 在deepin中安装docker
- mysql中生成列与JSON类型的索引