第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 数值处理函数

 

 
posted @ 2022-06-15 22:09  lqsj2018  阅读(61)  评论(0)    收藏  举报