前言
SQL支持用函数来处理数据,函数是在数据上执行,它给数据的转换和处理提供了方便。比如,前面提到过的RTrim()。函数的可移植性比较差(即,不同数据库之间的通用性)。
使用函数
大多数的SQL支持以下类型的函数:
1.用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数;
2.用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数;
3.用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数;
4.返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。
文本处理函数
上一章中我们已经看过一个文本处理函数的例子,其中使用RTrim()函数来去除列值右边的空格。下面是另一个例子,这次使用Upper()函数,它将文本转换为大写
函数 | 说明 |
---|---|
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,怎么办?显然,按正确的联系名搜索不会返回数据,如下所示:
现在试一下使用Soundex()函数进行搜索,它匹配所有发音类似于Y.Lie的联系名:
在这个例子中,WHERE子句使用Soundex()函数来转换cust_contact列值和搜索串为它们的SOUNDEX值。因为Y.Lee和Y.Lie发音相似,所以它们的SOUNDEX值匹配,因此WHERE子句正确地过滤出了所需的数据。
日期和时间处理函数
MySQL中,日期和时间采用相应的数据类型和特殊的格式来存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。
一般,应用程序是不使用这种格式的,所以,日期和时间函数总是被用来读取、统计和处理这些值。由于这个原因,日期和时间函数在MySQL语言中具有重要的作用。
Mark:这个部分还需要进行补充;
数值处理函数
数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算,因此没有文本串或日期—时间处理函数的使用那么频繁。