一、计算字段
有时候,数据库中的数据格式不一定是使用所需要的数据格式,需要对原数据进行拼接、裁剪、计算等操作,这时就要创建计算字段。
1 拼接
顾名思义,拼接就是将原属于表中两个列的字段拼成一个列,在其他的大部分DBMS中,拼接往往通过+ 或者||来实现,而在MySQL中,需要借用Concat函数来实现,如下列,将原顾客名称、顾客国家拼成一个列:
2.命名
在拼接工作完成后,新得到的列实现了计算功能,但是并没有名字,我们需要利用AS 关键字为其命名:
(Rtrim()为去除右侧空格的函数,相关的还有Ltrim()去除左边空格、Trim() 去除左右两边空格)
3,执行算术计算
MySQL支持加减乘除几个基本的算数操作符(+ - * /):
二、函数
和其他的DBMS一样,SQL支持利用函数来处理数据,前面的Rtrim等就是函数,但是需要注意的是,不同DBMS之间的函数兼容性并不好,所以在使用了函数时,最好做好注释,为以后可能的DBMS 之间的移植提供方便。
大多数SQL 支持以下几种类型 的函数:
(1) 处理文本串的文本函数(如大小写,删除或者填充值等等)
(2)用在数值数据上进行算术操作的数值函数
(3)用于处理日期和时间并从这些值中提取特定成分的日期和时间函数
(4)返回DBMS正使用的特殊信息(如返回用户登录信息、检查版本信息)的系统函数。
(1)文本处理函数
left() 返回串左边的字符
length() 返回串的长度
locate() 返回串的一个子串
lower() 将串转换为小写
Ltrim() 去掉串左边的空格
Right() 返回串右边的字符
Rtrim() 去掉串右边的空格
Soundex() 返回串的Soundex值
SubString() 返回字串的字符
Upper() 将串转换为大写
例子如下:
其中soundex函数值得解释一下,这是根据读音来进行匹配的函数,有时候知道数据的大致读音但并不精确知道数据,就可以利用这个函数匹配数据库中读音类似或者相同的数据,如数据为Y.Lee,但利用读音相近的Y.lie也可以匹配:
(2)日期和时间函数
在SQL 中,日和时间函数使用特殊的数据类型和格式储存,日期和时间函数就是用来读取、统计和处理这些值。
AddDate() 增加一个日期
AddTime() 增加一个时间
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 日期运算函数
Date_Format() 返回一个格式化的日期或者时间串
Day() 返回一个日期的天数部分
Day0fweek() 返回一个日期对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Month() 返回一个日期的月份部分
Now() 返回当前时间和日期
Second() 返回一个时间的秒数部分
Time() 返回一个日期时间对应的时间部分
Year() 返回一个日期的年数部分
在SQL中不管是更新还是插入新的时间数据时,都需要使用固定的日期格式:yyyy-mm-dd,使用两位数的年份SQL 也可以识别,但可能会造成不必要的误解,这也是编码的一个好习惯。
但在进行日期数据匹配时,我们并不能保证数据库中 的数据格式是yyyy-mm-dd还是yyyy-mm-dd hh-mm-ss,如果是后者,再使用select进行搜索,where date=‘2005-09-01’这样的条件行就永远不会返回数据,因此,在匹配之前,最好使用date()函数将时间数据格式固定为日期格式,就算之后时间数据格式有没有变化,代码都不用修改。
例:返回2005年9月份的订单行
有两种方法:
(3)数值处理函数
数值处理函数是DBMS中一致性最高的函数类型
Abs() 返回绝对值
Cos() 返回余弦值
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回正弦值
Sqrt() 返回平方根
Tan() 返回正切值