学习目的:
知道什么是函数,MySQL支持哪些函数,以及如何使用这些函数。
函数:
SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。
函数没有SQL的的可移植强。
为了代码的可移植性,许多SQL程序员不赞成使用特殊功实现的功能。如果你决定使用函数,应该保证做好代码注释,以便后来人能确切知道所编写SQL代码的含义。
使用函数:
大多数SQL实现支持一下类型的函数:
- 用于处理文本串(如删除,填充,转换大小写)的文本函数。
- 用于在数值数据上进行算术操作(如返回绝对值、进行代数运算)的数值函数。
- 用于处理时间和日期值并从这些值中提取特定成分(如返回两个日期之差,检查日期的有效性等)的日期和时间函数。
- 返回DBMS正使用的特殊信息(如发挥用户登录信息,检查版本细节)的系统函数。
文本处理函数:
常用的文本处理函数
函数
|
说明
|
Left()
|
返回串左边的字符
|
Length()
|
返回串的长度
|
Locate()
|
找出串的一个字串
|
Lower()
|
将串转换为小写
|
Ltrim()
|
去掉串左边的空格
|
Right()
|
返回串右边的字符
|
Rtrim()
|
去掉串右边的空格
|
Soundex()
|
返回串的SOUNEDX值
|
SubString()
|
返回字串的字符
|
Upper()
|
将串转换为大写
|
SOUNDEX是一个将任何文本串转换为描述语言表示的字母数字模式的算法。
Q:customers表中有一个顾 客Coyote Inc.,其联系名为Y.Lee。但如果这是输入错误,此联系名实际应该是Y.Lie,怎么办?
A: 现在试一下使用Soundex()函数进行搜索,它匹配所有发音类似于 Y.Lie的联系名:
SELECT cust_name,cust_contact
FROM customers
WHERE Soundex(`cust_contact`) = Soundex('Y Lei');
日期和时间处理函数:
日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。
一般,应用程序不使用用来存储日期和时间的格式,因此,日期和时间函数总是被用来读取、统计和处理这些值。由于这个原因,日期和时间函数在MySQL中具有重要作用。
常用日期和时间处理函数
函数
|
说明
|
AddDate()
|
增加一个日期(天、周等)
|
AddTime()
|
增加一个时间(时、分等)
|
CurDate()
|
返回当前日期
|
CurTime
|
返回当前时间
|
Date()
|
返回日期时间的日期部分
|
DateDiff()
|
计算两个日期之差
|
Date_Add()
|
高度灵活的日期运算函数
|
Date_Format()
|
返回一个格式化的日期或时间串
|
Day()
|
返回一个日期的天数部分
|
DayOfWeek()
|
对于一个日期,返回对应的星期几
|
Hour()
|
返回一个时间的小时部分
|
Minute()
|
返回一个时间的分钟部分
|
Month()
|
返回一个日期的月份部分
|
Now()
|
f返回当前的日期和时间
|
Second()
|
返回一个时间的秒部分
|
Time()
|
返回一个日期时间的时间部分
|
Year()
|
返回一个日期的年份部分
|
MySQL使用的日期格式:yyyy-mm-dd
SELECT cust_id, order_num
FROM orders
WHERE Date(order_date) ='2005-09-01'
如果要用日期,请使用Date()。
检索出2005年9月下的所有订单。
方法一:
SELECT cust_id, order_num
FROM orders
WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';
方法二:
SELECT cust_id, order_num
FROM orders
WHERE Year(order_date) =2005 AND Month(order_date) = 9;
数值处理函数:
数值处理函数仅处理数值数据。在主要的DBMS函数中,数值函数是最一直最统一的函数。
常用的数值处理函数
函数
|
说明
|
Abs()
|
返回一个数的绝对值
|
Cos()
|
返回一个角度的余弦
|
Exp()
|
返回一个数的指数指
|
Mod()
|
返回除操作的余数
|
Pi()
|
返回圆周率
|
Rand()
|
返回一个随机数
|
Sin()
|
返回一个角度的正弦
|
Sqrt()
|
返回一个数的平方根
|
Tan()
|
返回一个角度的正切
|