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() | 返回一个角度的正切 |