无论是数值计算、字符串处理、日期和时间操作,还是流程控制,MySQL都能提供一系列强大的函数来满足各种需求
本文将详细介绍MySQL数据库提供的几大类函数,并通过具体示例展示其用法
一、数值类函数 数值类函数主要用于处理数字,包括整型和浮点型等
MySQL提供了多种数值函数,以满足不同的数值计算需求
1.ABS(x) ABS函数用于返回x的绝对值
无论输入的数值是正数还是负数,ABS函数都会返回其非负的绝对值
例如,`SELECT ABS(-5);`将返回5
2.CEIL(x)和FLOOR(x) CEIL函数返回大于或等于给定数值的最小整数,而FLOOR函数返回小于或等于给定数值的最大整数
例如,`SELECT CEIL(4.1);`返回5,`SELECT FLOOR(4.9);`返回4
3.ROUND(x,y) ROUND函数用于将一个数值进行四舍五入
如果指定小数位数y,则返回x四舍五入后保留y位小数的值;如果不指定y,则默认保留0位小数
例如,`SELECT ROUND(4.6);`会返回5,`SELECT ROUND(4.123, 2);`会返回4.12
4.TRUNCATE(x,y) TRUNCATE函数返回数字x截断为y位小数的结果
与ROUND函数不同,TRUNCATE函数只是截断,不进行四舍五入
例如,`SELECT TRUNCATE(2.1234567,3);`会返回2.123
5.MOD(x,y) MOD函数对x和y进行取模操作,返回x除以y的余数
例如,`SELECT MOD(10,3);`将返回1
6.RAND() RAND函数用于返回0到1之间的随机数
该函数不需要参数,且每次返回的值都是随机的
例如,`SELECT RAND();`可能会返回0.63782307378745之类的值
7.SQRT(x) SQRT函数用于计算参数x的平方根
例如,`SELECT SQRT(16);`将返回4
8.POW(x,y) POW函数返回x的y次幂
例如,`SELECT POW(2,3);`将返回8
9.SIGN(x) SIGN函数返回参数的符号
如果x为正数,返回1;如果x为负数,返回-1;如果x为0,返回0
二、聚合函数 聚合函数用于根据一组数据求出一个值
在MySQL中,聚合函数的结果值只根据选定数据行中非NULL的值进行计算,NULL值则被忽略
1.COUNT() COUNT函数用于统计满足指定条件的行数
例如,`SELECT COUNT() FROM students;`会返回students表中的总行数
如果只想统计满足特定条件的行数,可以使用`WHERE`子句
2.SUM() SUM函数用于计算指定列的数值总和
例如,对于一个包含price列的products表,`SELECT SUM(price) FROM products;`会计算所有产品价格的总和
3.AVG() AVG函数用于计算指定列的平均值
例如,`SELECT AVG(score) FROM scores;`会计算scores表中score列的平均值
4.MAX()和MIN() MAX函数用于求出指定列的最大值,而MIN函数用于求出指定列的最小值
例如,`SELECT MAX(score) FROM scores;`会求出scores表中score列的最大值,`SELECT MIN(score) FROM scores;`会求出最小值
三、字符串函数 字符串函数主要用于处理表中的字符串,MySQL提供了多种字符串函数,以满足不同的字符串处理需求
1.LENGTH()和CHAR_LENGTH() LENGTH函数返回字符串的字节长度,而CHAR_LENGTH函数返回字符串的字符长度
需要注意的是,对于多字节字符集(如UTF-8),LENGTH和CHAR_LENGTH的返回值可能不同
2.CONCAT() CONCAT函数用于将多个字符串连接成一个字符串
例如,`SELECT CONCAT(Hello, , World);`会返回`Hello World`
3.SUBSTRING() SUBSTRING函数用于从一个字符串中提取子字符串
该函数需要指定原始字符串、子字符串的起始位置和子字符串的长度
例如,`SELECT SUBSTRING(Hello World, 1, 5);`会返回`Hello`
4.LEFT()和RIGHT() LEFT函数返回字符串最左边的x个字符,而RIGHT函数返回字符串最右边的x个字符
例如,`SELECT LEFT(hello, 2);`返回`he`,`SELECT RIGHT(hello, 3);`返回`llo`
5.TRIM()、LTRIM()和RTRIM() TRIM函数用于去掉目标字符串的空格(包括前后和中间的空格,但通常只去掉前后的空格)
LTRIM函数去掉字符串左侧的空格,而RTRIM函数去掉字符串右侧的空格
例如,`SELECT TRIM( hello world );`会返回`hello world`
6.REPLACE() REPLACE函数用于用字符串b替换字符串str中所有出现的字符串a
例如,`SELECT REPLACE(hello world, world, MySQL);`会返回`hello MySQL`
7.UPPER()和LOWER() UPPER函数将字符串中的所有字符转换为大写,而LOWER函数将字符串中的所有字符转换为小写
例如,`SELECT UPPER(hello);`返回`HELLO`,`SELECT LOWER(WORLD);`返回`world`
8.STRCMP() STRCMP函数用于比较两个字符串的ASCII值大小
如果第一个字符串小于第二个字符串,则返回-1;如果两者相等,返回0;如果第一个字符串大于第二个字符串,返回1
9.LOCATE()和INSTR() LOCATE函数返回子串在字符串中第一次出现的位置,可以从指定位置开始寻找
INSTR函数也返回子串在字符串中第一次出现的位置,但不需要指定开始位置
例如,`SELECT LOCATE(world, Hello world, 7);`会返回7(因为从第7个字符开始,“world”没有出现,但这里主要是为了展示LOCATE的用法,实际上从第1个字符开始寻找应返回7),`SELECT INSTR(Hello world, world);`也会返回7
10.REPEAT() REPEAT函数返回字符串重复指定次数的结果
例如,`SELECT REPEAT(abc, 3);`会返回`abcabcabc`