表:orders
字段:order_id order_name quantity item_price order_num order_date
用来处理数据的过程,上一章提到的RTrim()就是一个函数例子。
注:函数没有SQL的可移植性强。不同的DBMS支持的函数可能不同,所以在做数据迁移时,函数会是一个障碍。
为了解决这个问题,建议必须使用函数时,应当做好代码注释,以便以后能够比较清晰的了解整个SQL语义。
大多数SQL实现支持以下类型的函数:
*用于处理文本串(如删除或填充值,转化值为大写或小写)的文本函数。
*用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。
*用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数。
*返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。
使用upper()函数,将字母全部转化为大写
SELECT order_name,Upper(order_name) AS upper_order_name FROM orders ORDER BY order_name
函数 | 说明 |
---|---|
Left() | 返回串左边的字符 |
Length() | 返回串的长度 |
locate() | 找出串的一个子串 |
Lower() | 将串转化为小写 |
LTrim() | 去掉串左边的空格 |
Right() | 返回串右边的字符 |
RTrim() | 去掉右边的空格 |
Soundex() | 返回串的SOUNDEX值 |
SubString() | 返回子串的字符 |
Upper() | 将串转化为大写 |
常用时间和时间处理函数
函数 | 说明 |
---|---|
AddDate() | 增加一个日期(天、周等) |
AddTime() | 增加一个时间(时、分等) |
CurDate() | 返回当前日期 |
CurTime() | 返回当前时间 |
Date() | 返回日期时间和日期部分 |
DateDiff() | 计算两个日期之差 |
Date_Add() | 高度灵活的日期运算函数 |
Data_Format() | 返回一个格式化的日期或时间串 |
Day() | 返回一个日期的天数部分 |
DayOfWeek() | 返回一个日期,返回对应的星期几 |
Hour() | 返回一个时间的小时部分 |
Minute() | 返回一个时间的分钟部分 |
Month() | 返回一个时间的月份部分 |
Now() | 返回当前日期和时间 |
Second() | 返回一个时间的秒部分 |
Time() | 返回一个日期时间的时间部分 |
Year() | 返回一个日期的年份部分 |
基本日期比较:
SELECT order_id, order_num
FROM orders
WHERE order_date = '2015-09-01'
若此时,order_date为datetime类型,其格式是不满足仅仅只有日期的(该格式还包含时分秒),若想避免WHERE语句出现无法匹配的状况可以使用
SELECT order_id, order_num
FROM orders
WHERE Date(orderdate) = '2015-09-01'
查询2015年9月的所有订单
SELECT order_id, order_num
FROM orders
WHERE Date(order_date) BETWEEN '2015-09-01' AND '2015-09-30'
或者通过下面的SQL实现
SELECT order_id, order_num
FROM orders
WHERE Year(order_date) = 2005 AND Month(order_date) = 9
常用数值处理函数
函数 | 说明 |
---|---|
Abs() | 返回一个数的绝对值 |
Cos() | 返回一个数的余弦值 |
Exp() | 返回一个数的指数值 |
Mod() | 返回除操作的余数 |
Pi() | 返回圆周率 |
Rand() | 返回一个随机数 |
Sin() | 返回一个数的正弦值 |
Sqrt() | 返回一个数的平方根 |
Tan() | 返回一个数的正切值 |
我个人而言,感觉这一章能用到的东西屈指可数