————介绍什么是函数,DBMS支持何种函数,如何使用,以及可能带来的问题
| 函数 | 语法 |
|---|---|
| 提取字符串的组成部分 | - DB2、Oracle、PostgreSQL和SQLite使用SUBSTR() - MariaDB、MySQL和SQL Server使用SUBSTRING() |
| 数据类型转换 | - Oracle使用多个函数,每种类型的转换有一个函数 - DB2和PostgreSQL使用CAST() - MariaDB、MySQL和SQL Server使用CONVERT() |
| 提取当前日期 | - DB2和PostgerSQL使用CURRENT_DATE - MariaDB和MySQL使用CURDATE() - Oracle使用SYSDATE - SQL Server使用GETDATE() - SQLite使用DATE() |
7.1 常用文本处理函数
| 函数 | 说明 |
|---|---|
| LEFT()(或使用子字符串函数) | 返回字符串左边的字符 |
| LENGTH()(也使用DATALENGTH()或LEN()) | 返回字符串的长度 |
| LOWER() | 将字符串转换为小写 |
| LTRIM() | 去掉字符串左边的空格 |
| RIGHT()(或使用子字符串函数) | 返回字符串右边的字符 |
| RTRIM() | 去掉字符串右边的空格 |
| SUBSTR()或SUBSTRING() | 提取字符串的组成部分 |
| SOUNDEX() | 返回字符串的SOUNDEX值 |
| UPPER() | 将字符串转换为大写 |
UPPER() 文本转换为大写
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM Vendors ORDER BY vend_name;/*vend_name vend_name_upcaseBear Emporium BEAR EMPORIUMBears R Us BEAR R US*/
SOUNDEX() 使得能对字符串进行发音比较
SELECT cust_name, cust_contact FROM Customers WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green'); /* cust_name cust_contact Kids Place Michelle Green */7.2 日期处理函数
SQL Server的DATEPART()函数
SELECT order_num FROM Orders WHERE DATEPART(yy, order_date) = 2020;PostgreSQL的DATE_PART()函数
SELECT order_num FROM Orders WHERE DATE_PART('year', order_date) = 2020;Oracle、PostgreSQL的EXTRACT()函数
SELECT order_num FROM Orders WHERE EXTRACT(year FROM order_date) = 2020;SELECT order_num FROM Orders WHERE order_date BETWEEN to_date('2020-01-02', 'yyyy-mm-dd') AND to_date('2020-12-31', 'yyyy-mm-dd');MySQL、DB2、MariaDB
SELECT order_num FROM Orders WHERE YEAR(order_date) = 2020;SQLite
SELECT order_num FROM Orders WHERE strftime('%Y', order_date) = '2020';7.3 数值处理函数
| 函数 | 说明 | | —- | —- | | ABS() | 返回一个数的绝对值 | | COS() | 返回一个数的余弦 | | EXP() | 返回一个数的指数 | | PI() | 返回圆周率牌的值 | | SIN() | 返回一个角度的正弦 | | SQRT() | 返回一个数的平方根 | | TAN() | 返回一个角度的正切 |
