Sql中的set和select赋值方式的区别?

T-SQL中的变量分为局部变量和全局变量,局部变量的使用也是先声明,再赋值。而全局变量由系统定义和维护,我们可以直接使用,但是一般不定义全局变量。

局部变量

在T-SQL中,局部变量的名称必须以标记@作为前缀。

Declaer  @variable_name  DataType

其中@variable_name为变量名  DataType为数据类型。

局部变量的赋值有两种方法:使用Set语句或Select语句。

set  @variable_name = value

Selecte  @variable_name = value

?  SET赋值语句一般用户赋给变量指定的数据变量

?  Select赋值语句一般用于表中查询数据,然后查询的记录多于一条,将把最后一条记录的值赋给变量


 


Set


Select


同时对多个变量赋值


不支持


支持


表达式返回多个值


出错


将返回的最后一个值赋给变量


表达式未返回值


变量被赋值为NULL值


变量保持原值

建议使用Set,原因是因为Set语句没有结果,占用资源少,因此,给一个变量赋值时,使用Set效率更高。

注意:SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值(此时与使用 SET 赋值是完全相同的)。

对标量子查询的概念大家可能觉得陌生,下面举个例子说明下(对比上面绿色部分):

declare @name varchar(128)

set @name = ‘SELECT初始值‘

select @name =(select name from fuzhiTEST where id = 4 )

print @name --正确运行:显示NULL

GO

时间: 2024-12-25 01:40:12

Sql中的set和select赋值方式的区别?的相关文章

Java中String的两种赋值方式的区别

本文修改于:https://www.zhihu.com/question/29884421/answer/113785601 前言:在java中,String有两种赋值方式,第一种是通过"字面量"赋值,如:String str="hello",第二种是通过new关键字创建新对象,如:String str=new String("hello").那么这两种赋值的方式到底有什么区别呢,下面给出具体分析. 1.首先回顾Java虚拟机的结构图. 在上面的

SQL Server中 SET 和 SELECT 赋值有什么区别?

SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT.对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的. SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值.当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法. 下表列出 SET 与 SELECT 的区别.请特别注意红色部分.   set select 同时对多个变量同时赋值 不支持 支持 表

JAVA中创建字符串的两种方式的区别

我们知道,通常在Java中创建一个字符串会有两种方式,通过双引号直接赋值和通过构造器来创建. String x = "abcd"; String y = new String("abcd"); 然而,这两种方式之间的区别是什么?分别应用于哪些情况,之前还不是很懂. 1.双引号的方式 String x = "abcd"; String y = "abcd"; System.out.println(x==y);//true Sys

SQL中char nchar varchar nvarchar text ntext的区别

类型 长度 使用说明 长度说明 char(n) 定长 索引效率高,程序里面使用trim去除多余的空白 n必须是一个介于1和8000之间的数值,存储大小为n个字节 varchar(n) 变长 效率没char高 灵活 n必须是一个介于1和8000之间的数值.存储大小为输入数据的字节的实际长度,而不是n个字节 text(n) 变长 非Unicode数据 不用指定长度 nchar(n) 定长 处理Unicode数据类型(所有的字符使用两个字节表示) n的值必须介于1和4000之间,存储大小为n字节的两倍

SQL中in和exists的用法和效率区别

1. sql中in和exists的区别效率问题 2. SQL中IN和EXISTS用法的区别

spark sql中保存数据的几种方式

从官网来copy过来的几种模式描述: Scala/Java Python Meaning SaveMode.ErrorIfExists(default) "error"(default) When saving a DataFrame to a data source, if data already exists, an exception is expected to be thrown. SaveMode.Append "append" When saving

SQL中 count(*)和count(1)的对比,区别

执行效果: 1.  count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效果是一样的. 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少.  如果count(1)是聚索引,id,那肯定是count(1)快.但是差的很小的. 因为count(*),自动会优化指定到那一个字段.所以没必要去count(1),用c

html中DIV+CSS与TABLE布局方式的区别及HTML5新加入的结构标签(转)

DIV与TABLE布局的区别 div 和 table 的加载方式不同,div 的加载方式是即读即加载,遇到 <div> 没有遇到 </div> 的时候一样加载 div 中的内容,读多少加载多少:table 的加载方式是完成后加载,遇到 <table> 后,在读</table> 之前,table 中的内容不加载,或者传输中断了的时候加载,这是因为TABLE牵涉到多行多列问题,所以只有当TABLE所有内容加载完毕,浏览器才知道该怎么显示 . div与css配合使

PHP中引入文件的四种方式及区别

文件加载语句:include,require,include_once,require_once include,require: require函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份.include函数一般放在流程控制的处理部分中.PHP程序网页在读到 include的文件时,才将它读进来.这种方式,可以把程序执行时的流程简单化. 1 include有返回值,而require没有. "requi