与其他大多数计算机语言一样,SQL支持利用函数来处理数据。
函数没有SQL的可移植性强。能运行在多个系统上的代码称为可移植的。多数SQL语句是可移植的,在SQL实现之间有差异,这些差异通常不那么难处理。而函数的可移植性却不强。
文本处理函数
常用的文本处理函数:
1.Left():返回串左边的字符;
2.Length():返回串的长度;
3.Locate():找出串的一个子串;
4.Lower():将串转换为小写;
5.LTrim():去掉串左边的空格;
6.Right():返回串右边的字符;
7.RTrim():去掉串右边的空格;
8.Soundex():返回串的SOUNDEX值;
9.SubString():返回子串的字符;
10.Upper():将串转换为大写。
SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较。
例如customers表中的一位顾客,联系名为Y.Lee,但是这是输出错误的,实际上应该是Y.Lie。显然如果按Y.Lie搜索是不会返回数据的。
SELECT cust_name,cust_contact
FROM customers
WHERE cust_contact='Y.Lie';
现在尝试使用SOUNDEX()函数进行搜索,它会匹配所有发音类似于Y.Lie的联系名。
SELECT cust_name,cust_contact
FROM customers
WHERE Soundex(cust_contact)=Soundex('Y.Lie');
日期和时间处理函数
常用日期和时间处理函数:
1.AddDate():增加一个日期(天、周等);
2.AddTime():增加一个时间(时、分等);
3.CurDate():返回当前日期;
4.CurTime():返回当前时间;
5.Date():返回日期时间的日期部分;
6.DateDiff():计算两个日期之差;
7.Date_Format():返回一个格式化的日期或时间串;
8.Day():返回一个日期的天数部分;
9.DayOfWeek():对于一个日期,返回对应的星期几;
10.Hour():返回一个时间的小时部分;
11.Minute():返回一个时间的分钟部分;
12.Month():返回一个日期的月份部分;
13.Now():返回当前日期和时间;
14.Second():返回一个时间的秒部分;
15.Time():返回一个日期时间的时间部分;
16.Year():返回一个日期的年份部分。
不管是插入或者更新还是用WHERE子句进行过滤,日期格式首选yyyy-mm-dd。
SELECT cust_id,order_num
FROM orders
WHERE order_date='2015-09-01';
order_date数据类型为datetime,这种类型存储日期及时间值。如果order_date值为2015-09-01 11:30:05,则上述语句不会将其检索出来。解决办法是仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。
SELECT cust_id,order_num
FROM orders
WHERE Date(order_date)='2015-09-01';
如果想检索2015年9月下的所有订单,该如何操作?
SELECT cust_id,order_num
FROM orders
WHERE Date(order_date) BETWEEN '2015-09-01' AND '2015-09-30';
还有另外一种办法:
SELECT cust_id,order_num
FROM orders
WHERE Year(order_date)=2015 AND Month(order_date)=9;
数值处理函数
常用数值处理函数:
1.Abs():返回一个数值的绝对值;
2.Cos():返回一个角度的余弦;
4.Exp():返回一个数的指数值;
5.Mod():返回除操作的余数;
6.Pi():返回圆周率;
7.Rand():返回一个随机数;
8.Sin():返回一个角度的正弦;
9.Sqrt():返回一个数的平方根;
10.Tan():返回一个角度的正切。