天天看点

SQL Server数据库练习——SQL函数

函数的定义

函数是指一段可以直接被另一段程序或代码引用的程序或代码。

存储过程和函数的区别?

存储过程是用户定义的一系列SQL语句的集合,而函数通常是数据库已定义的方法,

具体区别如下:

1.对于存储过程来说可以返回参数,而函数只能返回值或者表对象

2.函数必须有返回值,存储过程可有可无

3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用

SQL函数的基本类型和种类

在 SQL 中,基本的函数类型和种类有若干种。

函数的基本类型:

Aggregate 函数(合计函数)
Scalar 函数

下面以表格形式向大家介绍Aggregate 函数和 Scalar 函数。

**Aggregate函数的操作面向一系列的值,并返回一个单一的值。**如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!

函数 描述
AVG(column) 返回某列的平均值
BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(column) 返回某列的行数(不包括NULL值)
COUNT(*) 返回被选行数
COUNT(DISTINCT column) 返回相异结果的数目
FIRST(column) 返回在指定的域中第一个记录的值(SQLServer2000 不支持)
LAST(column) 返回在指定的域中最后一个记录的值(SQLServer2000 不支持)
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column) 返回某列的总和
VAR(column)
VARP(column)

Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

函数 描述
UCASE© 将某个域转换为大写
LCASE© 将某个域转换为小写
MID(c,start[,end]) 从某个文本域提取字符
LEN© 返回某个文本域的长度
INSTR(c,char) 返回在某个文本域中指定字符的数值位置
LEFT(c,number_of_char) 返回某个被请求的文本域的左侧部分
RIGHT(c,number_of_char) 返回某个被请求的文本域的右侧部分
ROUND(c,decimals) 对某个数值域进行指定小数位数的四舍五入
MOD(x,y) 返回除法操作的余数
NOW() 返回当前的系统日期
FORMAT(c,format) 改变某个域的显示方式
DATEDIFF(d,date1,date2) 用于执行日期计算

函数的种类:

内建函数(SQL自带的函数,如Aggregate函数和Scalar 函数)

自定义函数(用户自定义的函数)

自定义函数的创建和使用:

我们以一张表为例来演示自定义函数的使用:

字段名 类型
ID int
Name nvarchar(50)
Sex bit

代码展示:

create function ConvertToSex(
	@sex bit --函数名为ConvertToSex,参数sex
)
returns varchar(4)
as
begin
	declare @rSex varchar(4)
	if(@sex=1)
		select @rSex='男'
	else
		select @rSex='女'
	return @rSex
end
``
调用函数:
```sql
select *, [dbo].[ConvertToSex](sex) from [dbo].[Customers]