函数处理数据
算术运算
操作符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
e . g . e.g. e.g. 列出 Orders 表中所有每项物品的 id ,数量 quantity ,单价 item_price ,总价 expanded_price(数量 * 单价);
sql
SELECT prod_id
,quantity
,item_price
,quantity*item_price AS expanded_price
FROM Orders
函数
在之前数据库相关的博文中,有介绍到几个基本函数:
函数 | 说明 | 举例 |
---|---|---|
concat(a,b) | 拼接a与b字段 | concat(name, mobile) AS basis_info |
rtrim() | 去除字段右侧空格 | rtrim(name) |
curdate() | 返回当前日期 | curdate() AS curr_date |
在进行后续内容阐述之前,读者必须先知道一个注意事项:
- 不同的 DBMS 对相同的函数效果,有着不同的函数语句;但是随着版本的更新迭代,很多 DBMS 不断更新融合,会产生一种 DBMS 有几个函数语句可以实现相同的函数效果;
- 总而言之,读者在已知自己需要什么效果的前提下,对不同的函数语句多加尝试,即可知道自己本地版本下,到底哪个语句可用哪个不可用。
文本处理函数
e . g . e.g. e.g. 字段内容全部大写;
sql
-- UPPER() 函数使得文本内容全部大写
SELECT UPPER(name) as cust_name
FROM Customers
表1:常用文本处理函数一览
函数 | 说明 |
---|---|
LEFT() | 返回字符串左侧的字符 |
LENGTH() 或 LEN() | 返回字符串的长度 |
LOWER() | 将字符串转换为小写 |
LTRIM() | 去掉字符串左侧的空格 |
RIGHT() | 返回字符串右边的 |
RTRIM() | 去掉字符串右侧的空格 |
SUBSTR() 或 SUBSTRING() | 提取字符串的部分 |
SOUNDEX() | 返回字符串的SOUNDEX值 |
UPPER() | 将字符串转换为大写 |
SOUNDEX() 函数:
e . g . e.g. e.g. 找出数据库中名字类似 "Michael Green" 的信息;
sql
SELECT cust_name
FROM Customers
WHERE SOUNDEX(cust_name) = SOUNDEX('Michael Green');
sql
-- 结果输出为:
cust_name
---------
Michael Green
Michelle Green
Michaeal Greem
上述结果的三者读音类似,所以 SOUNDEX()
函数将其筛选出来。
日期和时间处理函数
DATEPART() 函数:
e . g . e.g. e.g. 筛选出2020年所有订单;
sql
SELECT *
FROM Orders
WHERE DATEPART(yy, order_date)=2020;
PostgreSQL 版本
sql
SELECT *
FROM Orders
WHERE DATE_PART('year', order_date)=2020;
Oracle 版本
sql
SELECT *
FROM Orders
WHERE EXTRACT(year FROM order_date)=2020;
MySQL/MariaDB 版本
sql
SELECT *
FROM Orders
WHERE YEAR(order_date)=2020;
SQLite 版本
sql
SELECT *
FROM Orders
WHERE strftime('%Y', order_date)='2020';
数值处理函数
表2:常用数值处理函数一览
函数 | 说明 |
---|---|
PI() | 返回圆周率 π \pi π 的值 |
ABS() | 返回绝对值 |
SIN() | 返回角度的正弦 |
COS() | 返回角度的余弦 |
TAN() | 返回角度的正切 |
EXP() | 返回指数值 |
SQRT() | 返回平方根 |
--
以上