SQL Server 知识梳理八 函数的使用

来源:互联网 发布:淘宝水印怎么去掉 编辑:程序博客网 时间:2024/04/29 23:29


一、创建函数

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 <function_option> [ ,...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 <function_option> [ ,...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 <table_type_definition>
    [ WITH <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN 
        function_body 
        RETURN
    END
[ ; ]

2、实例

①TeachingManageSYS创建一个内嵌表值函数chengji1,实现根据姓名查询该学生所有课程的成绩

create functionchengji(@namechar(10))

returns table

as

return(

select Cname,Scorefrom StudentCourse,StudentInfo,CourseInfo

where StudentInfo.Sno=StudentCourse.SnoAND

CourseInfo.Cno=StudentCourse.CnoAND

Sname=@name)

--查询

select * from chengji('魏士斌')

②TeachingManageSYS创建一个多语句表值函数,实现查询某一课程的考试成绩。

CREATE FUNCTION all_score(@cname_inchar(10))

RETURNS @all_score_tab table(Sno char(6)primarykey,Snamechar(10)notnull,Ssex char(2),Scorereal)

AS

BEGIN

INSERT INTO @all_score_tab

SELECT a.Sno,a.Sname,a.Ssex,b.Score

FROM StudentINFO a,StudentCourseb,CourseINFO c

WHERE a.Sno=b.SnoAND b.Cno=c.CnoAND 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 )

返回代表指定日期年份的整数

原创粉丝点击