mysql中的函数
数学函数
- abs(x) 绝对值
- pi() π
- sqrt(x) 平方根
- mod(x,y) 取模
- ceil(x) 向上取整
- floor(x) 向上取整
- rand() 取0到1之间的随机数
- round(x) 四舍五入
- round(x,y) 保留y位小数的四舍五入
- truncate(x,y) 保留y位小数
- sign(x) 返回符号
- pow(x,y) x的y次方
- exp(x) e的x 次方
- log(x) 对数
- log10(x) 10的对数
- radians(x) 角度转弧度
- degrees(x) 弧度转角度
- sin(x) 正弦 asin(x) 反正弦
- cos(x) 余弦 acos(x) 反余弦
- tan(x) 正切 atan(x) 反正切
- cot(x) 余切
字符串函数
- char_length(str) 字符个数
- length(str) 字节个数,utf-8一个汉字三个字节
- concat(s1,s2...) 拼接
- concat_ws(x,s1,s2,s3...) 用x进行连接,javascript的
[].join(x)
- insert(str,pos,len,newstr) javascript的
[].splice(pos,len,new)
- lower(s) lcase(s) 转小写
- upper(s) ucase(s) 转大写
- left(s,len) 从左截取len
slice(0,len)
- right(s,len) 从右边截取len
slice(-len)
- lpad(s1,len,s2) 用s2重复填充s1到制定长度(左侧)
- rpad(s1,len,s2) 用s2重复填充s1到制定长度(右侧)
- ltrim(s) rtrim(s) trim(s) 去空白字符
- trim(s1 from str) 从str中删除两端的s1
- repeat(str,n) 重复n次str
- space(n) n个空格
- strcmp(s1,s2) 比大小
- replace(str,s1,s2) 用s2替换s1
- location(s1,str) 获取子串下标
str.indexOf(s1)
- position(s1 in str) 获取子串下标,同上
- instr(str,s1) 获取子串下标,同上
- reverse(s) 反转字符串
- elt(n,s1,s2,s3...) 从后面的数组中取
[s1,s2,s3...][n-1]
- field(s,s1,s2,s3...) 返回s的下标
- find_in_set(s,set) 返回s在set中的下标,s中不能有逗号
- make_set(bits,s1,s2,s3...) 通过比特位获取一个set
下标一般是从1开始的,而不是0,没有找到的情况下才是0
日期函数
- current_date curdate 当前日期,仅年月日
- current_time curtime 当前时间,仅时分秒
- current_timestamp localtime now sysdate 返回系统当前时间
- unix_timestamp (date) 无参数,返回当前时间戳,有参数,转时间戳
- from_unixtime(date) 时间戳转时间
- utc_date() 返回UTC日期
- utc_time() 返回UTC时间
- month(date) 返回月份(数字)
- monthname(date) 返回月份(英文单词)
- dayname(date) 星期(英文单词)
- dayofweek(date) 星期(1-7) 1是周天
- weekday(date) 星期(0-6) 0是周一
- week(date,mode) 一年的第几周,mode用来区分每周的第一天是星期天还是星期一,返回的范围是0-53还是1-53
- weekofyear(date) 等同于week(date,3) 1-53
- dayofyear(date) 1-366
- dayofmonth(date) 1-31
- year(date) 获取年份 1970-2069
- quarter(date) 季度 1-4
- minute(time) 分钟 0-59
- second(time) 秒 0-59
转换与计算
- timetosecond(time) 时间转秒
- extract(type from date/time) 上面一堆函数的通用版,可以用来返回年,月,日,时,分,秒或其他组合
- sec_to_time(sec) 秒转时间
- date_add(date,expr type) adddate(date,expr type) 日期加法运算
- date_sub(date,expr type) subdate(date,expr type) 日期减法
- addtime(time,expr) 时间计算
- subtime(time,expr) 时间减法
- datediff(date1,date2) 计算时间差date1-date2
格式化时间
- date_format(date,format) 格式化日期
- time_format(time,format) 格式化时间
- get_format(val_type,format_type) 格式化时间/日期的封装
具体用法参考教程http://www.w3school.com.cn/sql/func_date_format.asp
控制流函数
- if (expr,v1,v2) 三目运算 expr?v1:v2
- case
case
when expr1 then v1
when expr2 then v2
when expr3 then v3
when expr4 then v4
end;
- ifnull(v1,v2)
系统信息函数
- version() mysql版本号
- connection_id() 当前用户的连接id
- processlist
show processlist
正在运行的线程 - datebase() schema() 显示当前的数据库
- user() 当前登录的用户名
- charset() 返回字符集
- collations(str) 字符串排序方式
- last_insert_id() 一次插入多条数据时,返回的是最后一次插入的第一条的id
加密函数
- password(str) 不应用在个人应用中,单向加密
- md5(str) 可逆,公开算法
- encode(str,pswd_str) 加密后长度跟原始长度一直
- decode(str,pswd_str) 解密
其他函数
- format(x,n) 格式化小数位
- conv(n,from_base,to_base) 数字进制转换
- inet_aton(expr) ip地址转整数
- inet_ntoa(expr) 整数转ip
- get_lock(str,timeout) 创建锁 成功1 超时0 错误返回null
- release_lock(str) 释放锁
- is_used_lock(str) is_free_lock(str)检查锁,返回创建锁的connection_id 否则null
- benchmark(count,expr) 多次执行表达式,并返回运算时间
- convert() 改变字符串默认字符集
- cast(x,as type) convert(x,type) 转换数据类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)