————介绍什么是函数,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() 文本转换为大写

    1. SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM Vendors ORDER BY vend_name;
    2. /*
    3. vend_name vend_name_upcase
    4. Bear Emporium BEAR EMPORIUM
    5. Bears R Us BEAR R US
    6. */
  • 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() | 返回一个角度的正切 |