数据库中的函数

一、数学函数

Declare @i float,@j int, @a decimal(18,2)

Set @i=12.2112

Set @j=100

Print round(@i,2)  注释:保留小数点后前两位

Print ceiling(round(@i,2))   注释:保留小数点后两位后获取大于或等于这个数的最小整数

求@j的平方

1.Print power(@j,2)

2.Print square(@j)

二、字符串函数

CHARINDEX()

返回字符串中某个指定的子串出现的开始位置

格式:

CHARINDEX(<'字符表达式'>,<字符串或列名表达式>

注意:不能用于TEXT和IMAGE数据类型

如果没有发现子串,返回0值

PATINDEX

返回字符串中某个指定的子串出现的开始位置

PATINDEX(<'%字符表达式%'>,<column_name>)

子串表达式前后必须有百分号“%”否则返回值为0

此函数可以使用通配符,可用于CHAR,VARCHAR和TEXT数据类型

Substring_expression——字符表达式

expression——字符串或列名表达式

示例

Declare @i nvarchar(20),@j nvarchar(20),@o nvarchar(20)@a nvarchar(20),@p nvarchar(20)

Set @i='上海分公司经理'

Set @j='北京分公司经理'

Set @o ='天津分公司经理'

Set @a='上海分公司财务经理'

Set @p='天津分公司财务经理'

Print Right(@a,(len(@a)-CHARINDEX('分公司',@a)+1))

Print Right(@a,(len(@a)-PATINDEX('分公司%经理',@a)+1))    注释:查找所有经理,不管是什么经理

三、聚合函数

通常称聚合函数为列函数,其他函数为行函数

常用聚合函数

AVG   返回平均值

COUNT  返回结果的记录数

MAX

MIN

SUM   返回和

示例

SELECT AVG(分数) as 平均成绩

FROM 成绩信息

Where 考试编号='0801' and 课程编号='2'

注意:使用聚合函数时,列名需要手动指定,如果不手动指定,结果会显示无列名

四、日期和时间函数

获取当前时间

Print getdate()

获取UTC时间

Print getutcdate()

获取年份

Print year(getdate())

Print datepart(year,getdate())

Print datepart(yy,getdate())

yy年份  mm月份 dd天

当前时间添加一月

Print dateadd(mm,1,getdate()) 

五、标量值函数

在SQL Server中根据返回值形式的不同,将用户自定义函数分为标量值函数和表值函数两种

标量值函数返回一个确定类型的标量值,其返回类型为除text、ntext、image、cursor、timestamp和table类型外的其他数据类型

语法格式

CREATE FUNCTION 自定义函数名称           //创建自定义函数

([{@parameter_name scalar_parameter_data_type [ =default]}[,…n]])         //设置函数参数

RETURN scalar_return_data_type                //指定返回的数据类型

[AS]

BEGIN                                                       //在Begin...End中添加函数体语句

Function_body

RETURN scalar_expression

END

示例:

在函数中选择函数,选择标量值函数,显示模板,更改即可

CREATE FUNCTION avgsum(@id varchar(10))

RETURNS int

As 

BEGIN

    declare @sum int

    SELECT @sum=avg(分数) from 成绩信息

   where 课程编号=@id

   return @sum

END

Go

调用自定义函数

Select dbo.avgsum('4')

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值