declare声明变量、set、select变量赋值、print、select输出的区别及用法

--变量分全局、局部、全局是双@@开头、局部是@开头
declare @hh varchar(500),@bb varchar(500)        --变量前一定要先声明declare、变量名、然后是数据类型、可以int\varchar\datetime\这些
set @hh='78'                                     --给变量名赋值、给它赋78的值         
select @bb=po from Table_1 where NAME=@hh        --赋值可以用set、也可以用select 常用的都是直接用=
print @hh
print @bb                                        --然后输出变量、print也是打印的意思、也就是图形界面上窗口的提示
go

select *from Table_1 where NAME=@hh              --为什么会显示下红波浪呢、因为声明的变量是在go的批处理中、批处理结束后要使用变量、必须要重新声明
go

--使用set和select变量赋的区别(一)
declare @hh varchar(50),@bb varchar(50)
set @bb='张三',@bb='李四'                        -- 有下红波浪、set是不能同时变量赋值的、必须要单独使用set、比如set=,set=
go

declare @hh varchar(50),@bb varchar(50)          --select可以在同一个句子中变量赋值、打印''里加个空格、好区分、但是也不能同时输出多个变量、必须要+号
select @hh='张三',@bb='李四'
print @hh+' '+@bb
go

--使用set和select变量赋的区别(二)
declare @hh varchar(50)
set @hh=(select name from Table_1 )        --我们先看子查询、是有多个值的,如果是多个值的话就不能用set来赋值、语法是没问题、但执行会报错
go                                         --如果子查询是单个值就可以

declare @hh varchar(50)                    --select是可以给多个值的子查询赋值的、但是查询的结果是最后的一个值、
select  @hh=name from Table_1              --比如子查询有1,2,3这些值、用select赋值得到的是3最后这个值
select  @hh                                
go

--使用set和select变量赋的区别(三)
declare @hh varchar(50)
set @hh='张三'
set @hh=''
set @hh=(select BILL_NO from Table_1 where convert(varchar,NAME)='不存在这个条件' )  --如果子查询通过条件没有查到bill_no这个值的话、那就是空值、也会把空值赋给变量
print  @hh                                                                           --那么之前不管有赋多少个值、最终返回的都是空值null
go                                                                                   --或者说用set赋值是不允许有空值(不管是不是子查询)

declare @hh varchar(50)
set @hh='张三'
select @hh=BILL_NO from Table_1 where convert(varchar,NAME)='不存在这个条件'         --使用select赋值、就算有空值也会返回其他有值的变量、就不是把空值赋给变量了 
set @hh='李四'                                                                       --另外如果是多个赋值的话、返回的值是最后赋的那一个、前面不管赋了多少个值、打印出来的都是最后赋予的值
 select    @hh
go

--为什么最后打印有时候是用select、有时候用print呢、
--select 是查询结果返回数据库里指定某个表的、而print是输出到应用界面上的消息、比如ERP界面的窗口报错提示

 

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水亦流人必上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值