函数的定义
函数是指一段可以直接被另一段程序或代码引用的程序或代码。
存储过程和函数的区别?
存储过程是用户定义的一系列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]