SQL函数不是可移植portable的,各种DBMS往往有不同的函数。

文本处理函数

-- 转换为大写
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
FROM Vendors;
函 数 说 明
LEFT()(或使用子字符串函数) 返回字符串左边的字符
LENGTH()(也使用DATALENGTH()或LEN()) 返回字符串的长度
LOWER() 将字符串转换为小写
LTRIM() 去掉字符串左边的空格
RIGHT()(或使用子字符串函数) 返回字符串右边的字符
RTRIM() 去掉字符串右边的空格
SUBSTR()或SUBSTRING() 提取字符串的组成部分(见表8-1)
SOUNDEX() 返回字符串的SOUNDEX值
UPPER() 将字符串转换为大写

SOUNDEX()函数

将文本转换成描述其语音表示的字母数字模式。可用于比较字符串的发音。

SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
-- 可以过滤出类似的Michelle Green

日期和时间处理函数

SQL Server - DATEPART

SELECT order_num
FROM Orders
WHERE DATEPART(yy, order_date) = 2020;
-- 只返回2020年的订单

PostgreSQL - DATEPART/EXTRACT

SELECT order_num
FROM Orders
WHERE DATEPART('year', order_date) = 2020;
-- 也支持EXTRACT()函数

Oracle - EXTRACT/to_date

SELECT order_num
FROM Orders
WHERE EXTRACT(year FROM order_date) = 2020;
-- to_date('2022-01-01', 'yyyy-mm-dd')

MySQL和MariaDB - YEAR

SELECT order_num
FROM Orders
WHERE YEAR(order_date)=2020;

SQLite - strftime

SELECT order_num
FROM Orders
WHERE strftime('%Y', order_date) = '2020';

数值处理函数

函数 说明
ABS() 返回一个数的绝对值
COS() 返回一个角度的余弦
EXP() 返回一个数的指数值
PI() 返回圆周率 π 的值
SIN() 返回一个角度的正弦
SQRT() 返回一个数的平方根
TAN() 返回一个角度的正切