检索出来的数据通常需要经过处理再展示在客户端应用程序中。
文本处理函数
拼接字段
一般可用 + 或者 | | 连接两个列,但在MySQL和MariaDB中,必须使用特殊函数。
SELECT p_name + '(' + p_age + ')'
FROM p
ORDER BY p_name;
+ 可以和 | | 互换
在MySQL和MariaDB中
SELECT Concat(p_name , '(' , p_age , ')')
FROM p
ORDER BY p_name;
一般上述输出数据会保存填充为列宽的文本值,如果需要去掉空格,获得格式化数据,则使用RTRIM()函数。
SELECT RTRIM(p_name) + '(' + RTRIM(p_age) + ')'
FROM p
ORDER BY p_name;
RTRIM()去掉字符串右边的空格 LTRIM()去掉字符串左边的空格 TRIM()去点字符串两边的空格
使用AS取别名,一般可用于不合法字符的重新命名
SELECT RTRIM(p_name) + '(' + RTRIM(p_age) + ')' AS p_n
FROM p
ORDER BY p_name;
执行算术计算
对检索数据进行算术计算
算术操作符:+ - * /
常用文本处理函数
LEFT()(或使用自字符串函数) | 返回字符串左边的字符 |
LENGTH()(也使用DATALENGTH()或者LEN()) | 返回字符串的长度 |
LOWER()(Access使用LCASE()) | 将字符串转化为小写 |
LTRIM() | 去掉字符串左边的空格 |
RIGHT()(或使用子字符串函数) | 返回字符串右边的字符 |
RTRIM() | 去掉字符串右边的空格 |
SOUNDEX()(Access使用UCASE()) | 返回字符串的SOUNDEX值,将任意文本转换为描述其语音表示的字母数字模式的算法 |
UPPER() | 将字符串转换为大写 |
Microsoft Access 和 PostgreSQL 不支持SOUNDEX()。
若在创建SQLite时使用了SQLITE_SOUNDEX编译时选项,那么SOUNDEX()在SQLite中就可用。因为SQLITE_SOUNDEX不是默认的编译时选项,所以多数SQLite实现不支持SOUNDEX()。
SELECT p_name ,p_age
FROM p
WHERE SOUNDEX(p_name) = SOUNDEX('Lily');
SOUNDEX函数会匹配所有发音类似于Lily的名字
日期和时间处理函数
SELECT p_name ,p_age
FROM p
WHERE DATEPART(yy,p_date)=2019;
检索所有日期为2019的所有数据
在Access中使用一下格式
SELECT p_name ,p_age
FROM p
WHERE DATEPART('yyyy',p_date)=2019;
在PostgreSQL中
SELECT p_name ,p_age
FROM p
WHERE DATE_PART('year',p_date)=2019;
在Oracle中
SELECT p_name ,p_age
FROM p
WHERE to_number(to_char(p_date,'YYYY'))=2019;
to_char()用来提取日期成分
to_number()用来将提取的成分转换为数值。
同样也可使用BETWEEN操作符
SELECT p_name ,p_age
FROM p
WHERE p_date BETWEEN to_date('01-01-2019')
AND to_date('12-31-2019');
在SQL Server中使用CONVERT()替换to_date()
在MySQL和MariaDB中使用YEAR()从日期中提取年份
SELECT p_name ,p_age
FROM p
WHERE YEAR(p_date)=2019;
SQLite也可以
SELECT p_name ,p_age
FROM p
WHERE strftime('%Y',p_date)=2019;
按月份过滤
数值处理函数
ABS() | 返回一个数的绝对值 |
COS() | 返回一个角度的余弦 |
EXP() | 返回一个数的指数值 |
PI() | 返回圆周率 |
SIN() | 返回一个角度的正弦 |
SQRT() | 返回一个数的平方根 |
TAN() | 返回一个角度的正切 |
聚集函数
对某些运行的函数计算并返回一个值。
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
上述函数也可自由组合
以上大部分来自于《SQL必知必会》