高级编程T-SQL函数

时间:2023-03-08 19:54:25
高级编程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 =@name
declare @m decimal=0
select @m=AVG(WriteExam+LabExam)/2 from Exam where @stuId=StuId
return @m
end
go

select dbo.AvgScore('张三丰')