在数据操作中一些特殊的数据处理中,需要用到内置函数来进行数据的分析和统计,内置函数可以帮我们节省很多的时间,这里整理了一些常用的SQL内置函数,在编写SQL的时候能够经常的用到。内置函数通常是一些较为简单的函数,如果需要对数据做特别复杂的处理时,建议考虑另外一些方法。
字符串操作
字符串的处理在数据库使用中也经常碰到,其中字符串连接,字符串截取较为简单也是较为常见。
- 函数
CONCAT(str1 ,str2 ,...)
函数使用说明:返回结果为连接参数产生的字符串。如有任何一个参数为 NULL ,则返回值为 NULL 。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;
SELECT CONCAT(name,sex) FROM `students` ’
结果如下:
CONCAT(name,sex) |
王小明男 |
郑华女 |
王俊明男 |
张芳女 |
陈阳男 |
林墨男 |
- 函数
CONCAT_WS(separator ,str1 ,str2 ,...)
函数使用说明: CONCAT_WS()
代表 CONCAT With Separator ,是 CONCAT() 的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL ,则结果为 NULL 。函数会忽略任何分隔符参数后的 NULL 值。
SELECT CONCAT_WS('-',name,sex) FROM `students`
结果:
CONCAT_WS(‘-’,name,sex) |
王小明-男 |
郑华-女 |
王俊明-男 |
张芳-女 |
陈阳-男 |
林墨-男 |
- 函数
SUBSTRING(str ,pos )
函数使用说明:不带有len 参数的格式从字符串str 返回一个子字符串,起始于位置 pos 。带有len 参数的格式从字符串str 返回一个长度同len 字符相同的子字符串,起始于位置 pos 。 使用 FROM 的格式为标准 SQL 语法。也可能对pos 使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。
SELECT SUBSTRING(tel,1,3) FROM `students`
结果如下:
SUBSTRING(tel,1,3) |
132 |
138 |
156 |
171 |
158 |
159 |
数学函数
数学上的函数不同,通常也很少在数据处理的时候直接进行数据的数学运算,其中RAND()较为常见,在查询数据的过程中,需要随机的选取某几行数据。
- 函数
POW(X ,Y )
函数使用说明:返回 X 的 Y 乘方的结果值。
- 函数
RAND()
函数使用说明:返回一个随机浮点值 v ,范围在 0 到 1 之间 ( 即 , 其范围为 0 ≤ v ≤ 1.0) 。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。
SELECT * FROM `students` ORDER BY RAND()
随机排序,每次运行的结果都不相同:
id | name | sex | age | tel |
1 | 王小明 | 男 | 20 | 13256787651 |
6 | 林墨 | 男 | 23 | 15988456723 |
2 | 郑华 | 女 | 20 | 13878542358 |
4 | 张芳 | 女 | 23 | 17154723361 |
5 | 陈阳 | 男 | 22 | 15825637745 |
3 | 王俊明 | 男 | 21 | 15696746583 |
日期和时间函数
关于时间的函数特别的多,这里列举几个经常在数据分析时用到的函数。数据分析是通常需要按天数,对某一天的数据进行统计,需要用时间把数据分开。
- 函数
NOW()
函数使用说明:返回当前日期和时间值,其格式为 ‘YYYY-MM-DD HH:MM:SS’ 或 YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。
- 函数
TO_DAYS(date )
函数使用说明:给定一个日期 date , 返回一个天数 ( 从年份 0 开始的天数 ) 。
两个时间天数之差可用: TO_DAYS(date1 ) - TO_DAYS(date2 )。
聚合函数
在前面一章中,用到了聚合函数 COUNT(expr )
,求出分组下的个数,SUM
也经常用在求和中。
- 函数
COUNT(expr )
函数使用说明:返回SELECT 语句检索到的行中非NULL 值的数目。若找不到匹配的行,则COUNT() 返回 0
计算表里有多少数据:
SELECT COUNT(*) FROM `students`
- 函数
GROUP_CONCAT(expr )
函数使用说明:该函数返回带有来自一个组的连接的非NULL 值的字符串结果。
- 函数
SUM([DISTINCT] expr )
函数使用说明:返回expr 的总数。 若返回集合中无任何行,则 SUM() 返回NULL 。DISTINCT 关键词可用于 MySQL 5.1 中,求得expr 不同值的总和。 若找不到匹配的行,则SUM() 返回 NULL。