T-SQL入门攻略之5-T-SQL的变量与常量

本文介绍了T-SQL中的变量与常量概念,包括全局变量和局部变量的定义、使用方法,以及不同类型的常量示例。通过具体实例展示了如何在SQL Server中操作这些元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T-SQL 中有两类变量,一类是全局变量,一类是局部变量。

全局变量: 是由 SQLServer 预先定义并负责维护的一类变量主要用于保存 SQLServer 系统的某些参数值和性能统计数据,使用范围覆盖整个程序,用户对其只能引用而不能定义。

局部变量: 是由用户根据需要定义的,使用范围只限于某一个批语句或者过程体内的一类变量。局部变量主要用于储存临时数据或者由存储过程返回的结果。

1 :全局变量的引用

全部变量以 @@ 开头,后面跟相应的字符串,如 @@version 查看全部变量可以用

Select 语句实现。如

select @@language   -- 储存 当前语言名称

/*

繁體中文

*/

select @@dbts       -- 储存 当前数据库时间 戳值

/*

0x0000000000001770

*/

select @@version     -- 储存版本信息

/*

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)

    Nov 24 2008 13:01:59

    Copyright (c) 1988-2005 Microsoft Corporation

    Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

*/

更多信息请参考联机帮助

2 :局部变量的定义和引用

2.1 定义局部变量

局部变量由用户定义的用 declare 关键字 格式为

Declare @variable1 data_type[,@variable2 data_type2,…]

@variable1 为变量名一单个 @ 开头

data_type 为数据类型 可以是系统数据类型 也可以是用户自定义数据类型

定义单个变量

DECLARE @str VARCHAR ( 10)

同时定义多个变量

DECLARE @no_str varchar ( 8), @birthday_str smalldatetime , @avgrade_num numeric ( 3, 1);

2.2 使用 SET 对变量赋值

DECLARE @no_str varchar ( 8), @birthday_str smalldatetime , @avgrade_num numeric ( 3, 1);

SET @no_str= '20060112' ;

SET @birthday_str= '2000-2-5' ;

SET @avgrade_num = 89.8;

注:不能用一个 set 对多个变量赋值 如这样的写法是错误的

SET @no_str= '20060112' ,

@birthday_str= '2000-2-5' ,

  @avgrade_num = 89.8;

2.3 使用 SELECT 对变量赋值

Select 可以同时对多个变量赋值 如:

DECLARE @no_str varchar ( 8), @birthday_str smalldatetime , @avgrade_num numeric ( 3, 1);

SELECT @no_str= '20060112' ,

       @birthday_str= '2000-2-5' ,

       @avgrade_num = 89.8;

注:

SELECT 是查询语句,利用该语句可以将查询的结果赋值给对应的变量如果查询的结果返回多个值,则将最后一个赋值给局部变量。

-- 定義變量

DECLARE @no_str varchar ( 8),

        @birthday_str smalldatetime ,

        @avgrade_num numeric ( 3, 1);

-- 賦值

SELECT @no_str = s_no,

       @birthday_str = s_birthday,

       @avgrade_num = s_avgrade

From student

Where s_name LIKE ' %' ;

-- 顯示表信息 , 不難發現返回不止一條記錄

SELECT s_no,

       s_birthday,

       s_avgrade

From student

Where s_name LIKE ' %' ;

-- 查看變量不難發現 select 返回多個值時候則最後一個值被賦予局部變量

SELECT @no_str as s_no,

       @birthday_str as s_birthday,

       @avgrade_num as s_avgrade

2.4 引用变量值

USE MyDatabase  -- 打開數據庫 MyDatabase

GO

-- 定義局部變量

DECLARE @s_no varchar ( 8), @s_avgrade numeric ( 3, 1);

-- 對局部變量賦值

SET @s_no= '20060208' ;

SET @s_avgrade = 95.0;

-- 引用局部變量

UPDATE student

SET s_avgrade = @s_avgrade

Where s_no = @s_no   -- 此處變量標識 @ 不能省略

3 T-SQL 常量

常量又稱文字值或者標量值,它表示一個特定數據值的符號。其格式取決於它所表示的數據值的數據類型。可以 分為以下幾類。

3.1 字符串常量

此常量由兩個單引號來定義,是包含在兩個單引號內的字符序列。

SELECT 'CHINA'

SELECT ' 中國 '

-- 如果其中包含一個嵌入的單引號則需要在該單引號前再加一個單引號

-- 'abc'''

SELECT 'abc''' --abc'

注:

默認情況下是用單引號來定義字符串常量,但也可以用雙引號定義

需要將 quoted_identifier 選項設置為 off

以下均是合法的

set quoted_identifier off

select 'abc'   --abc

select "abc"  --abc

select 'ab''' --abc'

select "ab""c"--ab"c

set quoted_identifier on

3.2 整型常量

該常量不用單引號括起來且不包含小數點。如

select 2007

select - 2007

3. 3 日期常量

該常量用單引號括起來且使用特定格式的字符日期值 如:

select '200-03-25'

select 'april 15 2001'

3.4 二進制常量

該常量不用單引號括起來,但是前綴是 0x 且是 16 進制數字的字符串 如:

select 0xAE

select 0xfff

3.5 數值常量

select 123.456      --decimal 型常量

select 10.e5, 0.5e-2 --float real 常量

 

3. 6 位常量

位常量用數字 0 1 表示如果大於 1 則自動轉換成 1

3.7 貨幣常量

select $123

 

3.8 唯一標識常量

使用字符或者 2 進制格式指定

select 'E98E910A-68E6-47E4-AEBE-57AD84157F51'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值