SQL Server知识梳理八函数的使用
一、创建函数
1、语法
(1)创建标量函数
CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type
[ = default ] [ READONLY ] }
[ ,...n ]
]
)
RETURNS return_data_type
[ WITH [ ,...n ] ]
[ AS ]
BEGIN
function_body
RETURN scalar_expression
END
(2)创建内连表值函数
CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type
[ = default ] [ READONLY ] }
[ ,...n ]
]
)
RETURNS TABLE
[ WITH [ ,...n ] ]
[ AS ]
RETURN [ ( ] select_stmt [ ) ]
[ ; ]
(3)创建并执行多语句表值函数
CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type
[ = default ] [READONLY] }
[ ,...n ]
]
)
RETURNS @return_variable TABLE
[ WITH [ ,...n ] ]
[ AS ]
BEGIN
function_body
RETURN
END
[ ; ]
2、实例
①TeachingManageSYS创建一个内嵌表值函数chengji1,实现根据姓名查询该学生所有课程的成绩
create function chengji(@name char(10))
returns table
as
return(
select Cname, Score from StudentCourse, StudentInfo, CourseInfo
where StudentInfo.Sno=StudentCourse.Sno AND
CourseInfo.Cno=StudentCourse.Cno AND
Sname=@name)
--查询
select * from chengji('魏士斌')
②TeachingManageSYS创建一个多语句表值函数,实现查询某一课程的考试成绩。
CREATE FUNCTION all_score(@cname_in char(10))
RETURNS @all_score_tab table(Sno char(6) primary key,Sname char(10) not null,Ssex char(2),Score real)
AS
BEGIN
INSERT @all_score_tab
SELECT a.Sno,a.Sname,a.Ssex,b.Score
FROM StudentINFO a,StudentCourseb,CourseINFO c
WHERE a.Sno=b.Sno AND b.Cno=c.Cno AND c.Cname=@cname_in
RETURN
END
select * from all_score('
数据库原理')
二、删除函数
1、语法
DROPFUNCTION { [ schema_name. ] function_name } [ ,...n ]
2、实例(略)
三、常用函数
1、字符串函数
Upper
将小写字符数据转换为大写的字符表达式
UPPER(character_expression)
Lower
将大写字符数据转换为小写的字符表达式
LOWER(character_expression)
Ltrim
删除起始空格后返回字符表达式
LTrim(character_expression )
RTrim
:截断所有尾随空格后返回一个字符串
RTrim (character_expression )
SubString
获取字符串
SUBSTRING ( expression , start , length )
LEN
求字符串长度
len(character_expression)
2、日期和时间函数
函数
参数
DATEADD
( datepart , number, date )
返回一个日期加上一个指定时间间隔数后时间
DATEDIFF
( datepart , date1 , date2 )
返回两个指定日期间时间间隔
GETDATE
()
返回当前
系统日期和时间
DAY
( date )
返回代表指定日期的天的日期部分的整数
MONTH
( date )
返回代表指定日期月份的整数
YEAR
( date )
返回代表指定日期年份的整数