MySQL函数
2023-01-28 14:07:11 17 举报
AI智能生成
MySQL函数是用于执行特定任务的预定义程序,它们在数据库中提供额外的功能和灵活性。这些函数可以对数据进行操作、转换和处理,以便更好地满足应用程序的需求。常见的MySQL函数包括数学函数、字符串函数、日期和时间函数、聚合函数等。通过使用这些函数,用户可以更轻松地执行复杂的查询和操作,提高数据库的性能和效率。此外,MySQL函数还支持用户自定义函数(UDF),使开发人员能够根据特定需求创建自己的函数。总之,MySQL函数为数据库提供了丰富的功能,使其更加强大和灵活。
作者其他创作
大纲/内容
字符串函数
ASCII(s)
含义:返回字符串 s 的第一个字符的 ASCII 码。
CHAR_LENGTH(s)
含义:返回字符串的字符数
注:中文也算一个字符,而不是1个字节
字符串合并
CONCAT(s1,s2...sn)
含义:合并多个字符串
CONCAT_WS(x, s1,s2...sn)
含义:
注释:x就是那个分隔符,会在每个都加上
返回字符串位置
FIELD(s,s1,s2...)
返回第一个字符串 s 在字符串列表(s1,s2...)中的位置
注释:不是s在各个s1 s2 s3里的位置,而是与s1 s2 s3的位置匹配,s属于s1-s3之间
例子:
FIND_IN_SET(s1,s2)
返回在字符串s2中与s1匹配的字符串的位置
注释:s1在s2数值里的信息
例:SELECT FIND_IN_SET("c", "a,b,c,d,e")
LOCATE(s1,s)
从字符串 s 中获取 s1 的开始位置
注:s1在s的第几位,不区分大小写
例:select history.`工单号`,LOCATE('b',`工单号`) FROM history
POSITION(s1 IN s)
从字符串 s 中获取 s1 的开始位置
取字符
LEFT(s,n)
返回字符串 s 的前 n 个字符
RIGHT(s,n)
返回字符串 s 的后 n 个字符
MID(s,n,len)
从字符串 s 的 n 位置截取长度为 len 的子字符串,同 SUBSTRING(s,n,len)
SUBSTR(s, start, length)
从字符串 s 的 start 位置截取长度为 length 的子字符串
SUBSTRING_INDEX(s, delimiter, number)
返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。
如果 number 是正数,返回第 number 个字符左边的字符串。
如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
如果 number 是正数,返回第 number 个字符左边的字符串。
如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
替换
INSERT(s1,x,len,s2)
将s2在s1中进行替换,替换开始的位置是第x个,长度为len,len个字符被替换掉即删除并替换成s2
例:select `工单号`,INSERT(`工单号`,1,3,'haima') from history
REPLACE(s,s1,s2)
将字符串 s2 替代字符串 s 中的字符串 s1
例:select history.`工单号`,REPLACE(`工单号`,'WX','db') from history
转换
LCASE(s) / lower
将字符串 s 的所有字母变成小写字母
UCASE(s) / UPPER(s)
将字符串转换为大写
REVERSE(s)
将字符串s的顺序反过来
增减字符
增
LPAD(s1,len,s2)
在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len
例:SELECT LPAD('abc',5,'xx') -- xxabc
RPAD(s1,len,s2)
在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len
REPEAT(s,n)
将字符串 s 重复 n 次
例:select history.`工单号`,REPEAT(`工单号`,2) from history
减
LTRIM(s)
去掉字符串 s 开始处的空格
RTRIM(s)
去掉字符串 s 结尾处的空格
TRIM(s)
去掉字符串 s 开始和结尾处的空格
比较
STRCMP(s1,s2)
比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1
例:
select history.`工单号`,STRCMP(`工单号`,`进厂里程`) from history
数字函数
FORMAT(x,n)
函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入
注:转换为千分位格式,或许convert 也可以
例:SELECT FORMAT(250500.5634, 2),输出 250,500.56
运算
ABS(x)
返回 x 的绝对值
弧度
ACOS(x)
求 x 的反余弦值(单位为弧度),x 为一个数值
AVG(expression)
返回一个表达式的平均值,expression 是一个字段
CEIL(x)
返回大于或等于 x 的最小整数
CEILING(x)
返回大于或等于 x 的最小整数
EXP(x)
返回 e 的 x 次方
FLOOR(x)
返回小于或等于 x 的最大整数
例:SELECT FLOOR(1.5) -- 返回1
LN
返回数字的自然对数,以 e 为底
LOG10(x)
返回以 10 为底的对数
MOD(x,y)
返回 x 除以 y 以后的余数
例:SELECT MOD(5,2) -- 1
POW(x,y)
返回 x 的 y 次方
例:SELECT POW(2,3) -- 8
RAND()
返回 0 到 1 的随机数
ROUND(x)
返回离 x 最近的整数
SUM(expression)
返回指定字段的总和
计数
COUNT(expression)
返回查询的记录总数,
逻辑
GREATEST(expr1, expr2, expr3, ...)
返回列表中的最大值
MAX(expression)
返回字段 expression 中的最大值
LEAST(expr1, expr2, expr3, ...)
返回列表中的最小值
MIN(expression)
返回字段 expression 中的最小值
日期函数
日期操作
ADDDATE(d,n)
计算起始日期 d 加上 n 天的日期
例:select training.`担任时间`,ADDDATE(`担任时间`,183) from training
ADDTIME(t,n)
n 是一个时间表达式,时间 t 加上时间表达式 n
SELECT ADDTIME('2011-11-11 11:11:11', 5);
->2011-11-11 11:11:16 (秒)
->2011-11-11 11:11:16 (秒)
添加5s
SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5");
-> 2020-06-15 11:44:26
-> 2020-06-15 11:44:26
添加 2 小时, 10 分钟, 5 秒:
如果想增加天数在基础上小时数增加,按照24的倍数
DATE_ADD(d,INTERVAL expr type)
计算起始日期 d 加上一个时间段后的日期,type 值可以是:
SELECT DATE_ADD("2017-06-15", INTERVAL 10 DAY);
-> 2017-06-25
-> 2017-06-25
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 15 MINUTE);
-> 2017-06-15 09:49:21
-> 2017-06-15 09:49:21
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 HOUR);
->2017-06-15 06:34:21
->2017-06-15 06:34:21
详见https://www.runoob.com/mysql/mysql-functions.html
SUBDATE(d,n)
日期 d 减去 n 天后的日期
SELECT SUBDATE('2011-11-11 11:11:11', 1)
->2011-11-10 11:11:11 (默认是天)
->2011-11-10 11:11:11 (默认是天)
DATEDIFF(d1,d2)
计算日期 d1->d2 之间相隔的天数
显示
CURDATE()
返回当前日期
CURRENT_TIME / CURTIME()
返回当前时间
CURRENT_TIMESTAMP()
返回当前日期和时间
DATE_FORMAT(d,f)
按表达式 f的要求显示日期 d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
-> 2011-11-11 11:11:11 AM
-> 2011-11-11 11:11:11 AM
提取
DATE()
从日期或日期时间表达式中提取日期值
NOW()
返回当前日期和时间
YEAR(d)
返回年份
QUARTER(d)
返回日期d是第几季节,返回 1 到 4
MONTH(d)
返回日期d中的月份值,1 到 12
WEEK(d)
计算日期 d 是本年的第几个星期,范围是 0 到 53
DAY(d)
返回日期值 d 的日期部分
HOUR(t)
返回 t 中的小时值
DAYNAME(d)
返回日期 d 是星期几,如 Monday,Tuesday
DAYOFWEEK(d)
日期 d 今天是星期几,1 星期日,2 星期一,以此类推
DAYOFMONTH(d)
计算日期 d 是本月的第几天
DAYOFYEAR(d)
计算日期 d 是本年的第几天
EXTRACT(type FROM d)
从日期 d 中获取指定的值,type 指定返回的值。
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11')
-> 11
-> 11
高级函数
CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END
CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
ISNULL(expression)
判断表达式是否为 NULL
IF(expr,v1,v2)
如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
SELECT IF(1 > 0,'正确','错误')
->正确
->正确
NULLIF(expr1, expr2)
比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1
0 条评论
下一页