第8课 使用函数处理数据
第8课 使用函数处理数据
8.1 函数
每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的 DBMS 等同地支持。虽然所有类型的函数一般都可以在每个 DBMS 中使用,但 各个函数的名称和语法可能极其不同。为了说明可能存在的问题,表 8-1 列出了 3 个常用的函数及其在各个 DBMS 中的语法:

可移植(portable)
8.2 使用函数
8.2.1 文本处理函数

SOUNDEX 是一个将任何文 本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX 考虑了 类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比 较。虽然 SOUNDEX 不是 SQL 概念,但多数 DBMS 都提供对 SOUNDEX 的支持。
现在试一下使用 SOUNDEX()函数进行搜索,它匹配所有发音类似于 Michael Green 的联系名:
SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
输出:
cust_name cust_contact
-------------------------- ----------------------------
Kids Place Michelle Green
8.2.2 日期和时间处理函数
为在 SQL Server 中检索 2012 年的所有订单,可如 下进行:
SELECT order_num
FROM Orders
WHERE DATEPART(yy, order_date) = 2012;
Access
SELECT order_num
FROM Orders
WHERE DATEPART('yyyy', order_date) = 2012;
PostgreSQL
SELECT order_num
FROM Orders
WHERE DATE_PART('year', order_date) = 2012;
Oracle
SELECT order_num
FROM Orders
WHERE to_number(to_char(order_date, 'YYYY')) = 2012;
完成相同工作的另一方法是使用 BETWEEN 操作符
SELECT order_num
FROM Orders
WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31-2012');
MySQL 和 MariaDB 用户可使用名为 YEAR()的函数从日期中提取年份:
SELECT order_num
FROM Orders
WHERE YEAR(order_date) = 2012;
在 SQLite 中有个小技巧:
SELECT order_num
FROM Orders
WHERE strftime('%Y', order_date) = '2012';
8.2.3 数值处理函数

小学生C++