1.函数
与SQL语句不同,SQL函数是不可移植的。
可移植(portable):所编写的代码可以在多个系统上运行。
每个DBMS都有特定的函数:
函数 |
语法(MySQL) |
提取字符串的组成部分 |
SUBSTRING() |
数据类型转换 |
CONVERT() |
提取当前日期 |
CURDATE() |
使用函数时,应该保证做好代码注释,以便能确切地知道所编写的SQL代码的含义。
2.使用函数
大多数SQL实现支持以下类型函数:
用于处理文本字符串的文本函数;
用于在数值数据上进行算数操作的数值函数;
用于处理日起和时间值,并从这些值中提取特定成分的日期和时间函数;
返回DBMS正在使用的特殊信息的系统函数。
(1)文本处理函数
常用的文本处理函数
函数 |
说明 |
LEFT()(或使用子字符串函数) |
返回字符串左边的字符 |
LENTH()(也使用DATALENGTH()或LEN()) |
返回字符串的长度 |
LOWER() |
将字符串转换为小写 |
LTRIM() |
去掉字符串左边的空格 |
RIGHT()(或使用子字符串函数) |
返回字符串右边的字符 |
RTRIM() |
去掉字符串右边的空格 |
SOUNDEX() |
返回字符串的SOUNDEX值 |
UPPER() |
将字符串转换为大写 |
1)UPPER()函数
输入:
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;
输出:
2)SOUNDEX()
是一个将任何文本串转换为其语音表示的字母数字模式的算法,考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。
Customers表中有一个顾客Kids Place,其联系人为Michelle Green,但如果这是错误的,此联系名实际是是Michael Green,按正确的联系名搜索不会返回数据。
输入:
SELECT cust_name, cust_contact
FROM Customers
WHERE cust_contact = 'MICHAEL Green';
输出:
输入:
SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('MICHAEL Green');
输出:
(2)日期和时间处理函数
日期和时间采用相应的数据类型存储在表中,每种DBMS都有自己的特殊形式。但是它们很不一致,可移植性最差。
MySQL具有各种日期处理函数,但没有DATEPART(),可使用名为YEAR()的函数从日期中提取年份。
输入:
SELECT order_num
FROM Orders
WHERE YEAR(order_date) = 2012;
输出:
(3)数值处理函数
仅处理数值数据,一般主要用于代数、三角或几何运算。在主要的DBMS函数中,数值函数是最一致、最统一的函数。
常用数值处理函数:
函数 |
说明 |
ABS() |
返回一个数的绝对值 |
COS() |
返回一个角度的余弦 |
EXP() |
返回一个数的指数值 |
PI() |
返回圆周率 |
SIN() |
返回一个角度的正弦 |
SQRT() |
返回一个数的平方根 |
TAN() |
返回一个角度的正切 |