《SQL必知必会》--函数
第八课 使用函数处理数据
在本节课开始之前,我们首先大致回顾一下目前为止,我们所学过的知识及其内在逻辑。
首先我们知道,本文的初始点,并不是如何从无到有建立一个新的数据库。而是,默认我们目前已经有了一个数据库。
在有了数据库之后,我们首先需要知道,数据库里有什么?即数据检索(SELECT
语句,LIMIT
语句,ORDER
语句)和数据过滤(WHERE
子句、组合过滤、通配符过滤)。
在了解数据库里有什么之后,从第七课数据拼接与执行算术计算开始,就已经进入了数据处理的世界。
本课就进一步介绍SQL语言中处理数据的一项便利但又不便利的工具–函数。
函数
如果,你之前学过其他计算机语言,那么你对计算机中的函数概念想必也有一些了解。
在特定的DBMS中,函数为数据处理带来的便利性是毋庸置疑 的。
但是,目前存在的最大的问题就在于,虽然SQL语句被几乎所有的DBMS都等同地支持,但是,却仅有相当少的一部分SQL函数也享有相同的待遇。
各大厂商在基本的SQL语句和函数的基础上各自设计出不同的函数以便利DBMS客户的使用。最终的结果就是,明明具有相同功能的函数,在不同的DBMS中,却有不同的命名。因此大部分SQL函数代码,不可移植。
在下面,我们将介绍集中可移植的SQL函数。
使用函数
大多数SQL实现支持以下类型的函数:
- 用于处理文本字符串(如删除或填充,转换为大写或小写)的文本函数。
- 用于在数值数据上进行的算术操作(如返回绝对值,进行代数运算)的数值函数。
- 用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。
- 返回DBMS正使用的特殊信息(如返回用户登录信息)的系统函数。
文本处理函数
在上一课中,我们使用到了去掉列值右边空格的函数RTRIM()
。
1 |
|
以上函数在MySQL中是不正确的,因为该系统中字段拼接方式为特定的函数
CONCAT()
,而该函数自带空格消除术。当然RTRIM()
还是可以用的。
1 |
|
除此之外,再举一个文本处理函数的例子UPPER()
。
输入
1 |
|
输出
1 |
|
在下表中罗列出常用的通用的文本处理函数。
函数 | 说明 |
---|---|
LEFT() | 返回字符串左边的字符 |
LENGTH() | 返回字符串长度 |
LOWER() | 将字符串转换成小写 |
LTRIM() | 去掉字符串左边的字符 |
RIGHT() | 返回字符串右边的字符 |
RTRIM() | 去掉字符串右边的字符 |
SOUNDEX() | 返回字符串的SOUNDEX值 |
UPPER() | 将字符串转换成大写 |
LENGTH()
输入:
1 |
|
输出:
1 |
|
LOWER()
输入:
1 |
|
输出:
1 |
|
LTRIM()
输入:
1 |
|
输出:
1 |
|
LTRIM()
输入:
1 |
|
输出:
1 |
|
SOUNDEX()
是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。
下面这个例子呢,很好玩,也充分说明了该函数的作用。
- 假如,我们有一个客户名为Michael Green;
- 但是,我们在储存数据时误将其存为Michelle Green。
- 所以,我们应如何将其检索出来呢?
1 |
|
输出:
1 |
|
日期和时间处理函数
各个数据库管理系统基本都不相同,因此,不在这里学了。以后专门学习某一固定的DBMS时候再说吧。
数值处理函数
数值处理函数仅处理数值数据。
这些函数一般主要用于代数、三角或几何运算,因此不像字符串或日期-时间处理函数那么频繁使用。
具有讽刺意味的是,在主要的DBMS的函数中,数值函数是最一致、最统一的函数。
在下表中列出常用数值处理函数。
函数 | 说明 |
---|---|
ABS() | 返回一个数的绝对值 |
COS() | 返回一个角度的余弦 |
EXP() | 返回一个数的指数值 |
PI() | 返回圆周率 |
SIN() | 返回一个监督的正弦 |
SQRT() | 返回一个数的平方根 |
TAN() | 返回一个角度的正切 |
小结
在本课中,主要的函数具有的可移植性不强,应该在日后选择某个具体的DBMS时,深入学习。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!