SQL Server 数据库T-SQL编程

Posted 空岛迷梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 数据库T-SQL编程相关的知识,希望对你有一定的参考价值。

1、T-SQL编程

通过 SQL 语句来完成业务的处理,执行编写好的 sql 语句,就可以完成业务处理。

2、局部变量

SQL server 中变量分为:局部变量 和 全局变量。

全局变量,在全局可用,系统自定义,用户不可以定义全局变量,用不不可以修改全局变量,全局变量以 “@@” 开头

局部变量就是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。在批处理和脚本中变量可有有如下用途:作为计数器计算循环执行的次数或控制循环执行的次数,保存数据值供控制流语句的测试,以及保存由存储过程代码返回的数据值或者函数返回值。

注意:
数据类型不能是text、ntext、image类型,局部变量被引用时要在其名称前加上标志 “@” ,如果不为局部变量赋值,则默认赋值为 null。

定义变量

declare @text varchar(20) ---变量名开始必须是@

赋值变量

方法1:
set @text = \'你好\' ---(不推荐)

方法2:
select @text = \'你好\'

输出内容

print @text

自定义错误处理

begin try
    ---SQL 语句(捕捉异常)
end try
begin catch
    ---SQL 语句(处理异常)
end catch

可以在catch中使用以下语句抛出错误:

throw error_number | @local_variable,
message | @local_variable,
state | @local_variable;

SQL Server 高级编程之T-SQL 编程函数

--字符串函数
--1、LEN:返回一个字符串的字符数
select LEN(‘中国‘),LEN(‘abc123!‘)
select LEN(‘abc ‘+‘1‘),LEN(‘ abc‘)
--2、DataLength:返回一个字符串的字节数
select DATALENGTH(‘中国‘),DATALENGTH(‘abc123!‘)
--3、Right、left :返回一个字符串的右边或左边的一部分字符
select RIGHT(‘abcdef‘,3),LEFT(‘abcdef‘,3)
--4、Substring:字符串截取函数 SQL的下标从1开始
select SUBSTRING(‘abcdef‘,2,3)
--5、charIndex:字符串查找函数
select CHARINDEX(‘a‘,‘bcadadfd‘,1)--’查找什么‘,‘具体’,查找第几个
--6、UPPER:字母大写转换函数
--7、LoWER:字母小写转换函数
select UPPER(‘abc123‘),LOWER(‘ABc123中!‘)
--8、SPACE:产生空格函数
select len(‘abc‘ +SPACE(10)+‘123‘)
--9、replicate:字符串重复函数
select REPLICATE(‘abc ‘,3)
--10、replace:字符替换函数
select REPLACE(‘oIoo000oooo‘,‘o‘,‘0‘)--后两个双引号表示:把什么替换成什么
--11、Stuff:字符替换函数
select STUFF(‘湖南武汉‘,2,1,‘北‘)
select STUFF(‘中国长沙‘,3,0,‘武汉‘)
--12、Ltrim和Rtrim:去掉字符串左边或右边全部空格
select LEN(LTRIM(‘ abc d ‘)),Len(RTRIM(‘ abc d ‘))
--13、Str:将数值转换为字符串函数
select STR(12345.7654,5,2) --8位2位小数位
--14、char:将一个ASCII值转换为一个字符
select CHAR(69),ASCII(‘*‘)

 

--日期函数
--1、getdate():返回服务器上当前时间
select GETDATE()
--2、datepart:返回一个日期的一部分值(整型)
--3、datename:返回一个日期的一部分值(字符串)
--返回一周的第几天
select DATEPART(DW,GETDATE()),DATENAME(DW,GETDATE())
--返回一年的第几周
select DATEPART(WEEK,GETDATE()),DATENAME(WEEK,GETDATE())
--4、datediff:日期比较函数
--返回每笔交易已经发生了多少天
use BankDB
select DAtediff(dd,TransDate,GETDATE()) from TransInfo
--5、dateADD:日期改变函数
select DATEADD(DAY,2,GETDATE())

 

 

--自定义一个函数,根据学员的姓名来获取学员的两科平均成绩
if OBJECT_ID(‘AvgScore‘) is not null
drop function AvgScore
go
create function AvgScore(@name varchar(50))
returns decimal as
begin
declare @stuId decimal=0
select @stuId=StuId from StuInfo where StuName [email protected]
declare @m decimal=0
select @m=AVG(WriteExam+LabExam)/2 from Exam where @stuId=StuId
return @m
end
go

select dbo.AvgScore(‘张三丰‘)

























































以上是关于SQL Server 数据库T-SQL编程的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server进阶T-SQL查询和编程的背景

SQL Server 高级编程之T-SQL 编程函数

SQL server学习T-SQL编程逻辑控制语句和安全模式

T-SQL查询进阶—理解SQL Server中的锁

SQL Server——存储过程

SQL Server T—SQL 存储过程 触发器