9.基础-使用数据处理函数

前言

       SQL支持用函数来处理数据,函数是在数据上执行,它给数据的转换和处理提供了方便。比如,前面提到过的RTrim()。函数的可移植性比较差(即,不同数据库之间的通用性)。

使用函数

       大多数的SQL支持以下类型的函数:

      1.用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数;

      2.用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数;

      3.用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数;

      4.返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。

文本处理函数

     上一章中我们已经看过一个文本处理函数的例子,其中使用RTrim()函数来去除列值右边的空格。下面是另一个例子,这次使用Upper()函数,它将文本转换为大写

9.基础-使用数据处理函数

常用的文本处理函数
函数 说明
Left() 返回文本串左边的字符
Length() 返回文本串的长度
Locate() 找出文本串的一个子串
Lower() 将文本串转换为小写
LTrim() 去掉文本串左边的空格
Right() 返回文本串右边的字符
RTrim() 去掉文本串右边的空格
Soundex() 返回文本串的SOUNDEX值
SubString() 返回子串的字符
Upper() 将文本串转换为大写
   

       上表中的SOUNDEX需要做进一步的解释。

       SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。

       SOUNDEX考虑了类似的发音字符和音节,使得能对文本串进行发音比较而不是字母比较。

       虽然SOUNDEX不是SQL概念,但MySQL(就像多数DBMS一样)都提供对SOUNDEX的支持。

      下面给出一个使用Soundex()函数的例子。customers表中有一个顾客Coyote Inc.,其联系名为Y.Lee。但如果这是输入错误,此联系名实际应该是Y.Lie,怎么办?显然,按正确的联系名搜索不会返回数据,如下所示:

9.基础-使用数据处理函数

       现在试一下使用Soundex()函数进行搜索,它匹配所有发音类似于Y.Lie的联系名:

9.基础-使用数据处理函数

      在这个例子中,WHERE子句使用Soundex()函数来转换cust_contact列值和搜索串为它们的SOUNDEX值。因为Y.Lee和Y.Lie发音相似,所以它们的SOUNDEX值匹配,因此WHERE子句正确地过滤出了所需的数据。

日期和时间处理函数

       MySQL中,日期和时间采用相应的数据类型和特殊的格式来存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。

       一般,应用程序是不使用这种格式的,所以,日期和时间函数总是被用来读取、统计和处理这些值。由于这个原因,日期和时间函数在MySQL语言中具有重要的作用。

9.基础-使用数据处理函数

Mark:这个部分还需要进行补充;

数值处理函数

       数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算,因此没有文本串或日期—时间处理函数的使用那么频繁。

9.基础-使用数据处理函数