您的位置:首页 > 数据库

T-SQL入门攻略之5

2010-07-16 12:04 134 查看
T-SQL入门攻略之5-T-SQL的变量与常量 收藏
--> Title : T-SQL入门攻略之5-T-SQL的变量与常量

--> Author : wufeng4552

--> Date : 2010-03-25

在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'





本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wufeng4552/archive/2010/03/25/5414404.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: