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就是那个分隔符,会在每个都加上<br>
返回字符串位置
FIELD(s,s1,s2...)
返回第一个字符串 s 在字符串列表(s1,s2...)中的位置
注释:不是s在各个s1 s2 s3里的位置,而是与s1 s2 s3的位置匹配,s属于s1-s3之间<br>
例子:
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 之后的子串。<br>如果 number 是正数,返回第 number 个字符左边的字符串。<br>如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
替换<br>
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<br>
将字符串 s 的所有字母变成小写字母
UCASE(s) / UPPER(s)<br>
将字符串转换为大写
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 也可以<br>
例:SELECT FORMAT(250500.5634, 2),输出 250,500.56
运算
ABS(x)
返回 x 的绝对值
弧度<br>
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 中的最小值
日期函数
日期操作<br>
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);<br>->2011-11-11 11:11:16 (秒)
添加5s
SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5"); <br>-> 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); <br>-> 2017-06-25
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 15 MINUTE);<br>-> 2017-06-15 09:49:21
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 HOUR);<br>->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)<br>->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')<br>-> 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') <br>-> 11
高级函数
CASE expression<br> WHEN condition1 THEN result1<br> WHEN condition2 THEN result2<br> ...<br> WHEN conditionN THEN resultN<br> ELSE result<br>END
CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
ISNULL(expression)
判断表达式是否为 NULL
IF(expr,v1,v2)
如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
SELECT IF(1 > 0,'正确','错误') <br>->正确
NULLIF(expr1, expr2)
比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1
0 条评论
下一页