在数据操作中一些特殊的数据处理中,需要用到内置函数来进行数据的分析和统计,内置函数可以帮我们节省很多的时间,这里整理了一些常用的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。