【MySQL】内置函数
作者:爱写代码的刚子
时间:2024.4.1
前言:本篇博客将会介绍mysql中的内置函数
日期函数
函数名称 | 描述 |
---|---|
current_date() | 当前日期 |
current_time() | 当前时间 |
current_timestamp() | 当前时间戳 |
date(datetime) | 返回datetime参数的日期部分 |
data_add(date,interval d_value_type) | 在date中添加日期或者时间,interval后的数值单位可以是:year minute second day |
data_sub(date,interval d_value_type) | 在date中减去日期或者时间interval后的数值单位可以是:year minute second day |
datediff(date1,date2) | 两个日期的差,单位是天(date1 - date2) |
now() | 当前日期时间 |
- 获取年月日
- 获取时分秒
- 获取时间戳
- 提取出日期
- 从当前时间中提取日期
- 在日期的基础上加日期:
- 在日期的基础上减去时间:
- 计算两个日期之间相差多少天:
案例:
- 创建一张表,记录生日
- 添加当前日期
不管是时分秒还是时间戳,都能显示出日期:
案例:
- 创建一个留言表
- 插入数据
- 显示所有留言信息,发布日期只显示日期,不用显示时间
- 请查询在2分钟内发布的帖子
字符串函数
函数名称 | 描述 |
---|---|
charset(str) | 返回字符串字符集 |
concat(string2 [,…]) | 连接字符串 |
instr(string,substring) | 返回substring在string中出现的位置,没有返回0 |
ucase(string2) | 转换成大写 |
lcase(string2) | 转换成小写 |
left(string2,length) | 从string2中的左边起取length个字符 |
length(string) | string的长度(实际是字节数,utf8中一个汉字占了3个字节) |
replace(str, search_str,replace_str) | 在str中用replace_str替换search_str |
strcmp(string1,string2) | 逐字符比较两字符串大小 |
substring(str, position [,length]) | 从str的postion开始,取length个字符 |
ltrim(string) rtrim(string) trim(string) | 去除前空格或后空格(不影响中间空格,用于数据清洗) |
案例:
- 获取emp表的ename列的字符集
- **要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分” **
- 求学生表中学生姓名占用的字节数
注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数; 如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数 (与字符集编码有关)
- 将EMP表中所有名字中有S的替换成’上海’。
这个替换并不更改数据库中原始的数据
- 截取EMP表中ename字段的第二个到第三个字符
mysql中,字符串下标从1开始
第三个参数表示截取几个字符
- 以首字母小写的方式显示所有员工的姓名
- 去掉字符串的左边空格
数学函数
函数名称 | 描述 |
---|---|
abs(number) | 绝对值函数 |
bin(decimal_number) | 十进制转换二进制 |
hex(decimalNumber) | 转换为十六进制 |
conv(number, from_base,to_base) | 进制转换 |
ceiling(number) | 向上去整 |
floor(number) | 向下去整 |
format(number, decimal_place) | 格式化,保留小数位数 |
hex(decimalNumber) | 转换成十六进制 |
rand() | 返回随机浮点数,范围[0.0,1.0) |
mod(number, denominator) | 取模,求余 |
- 绝对值
- 向上取整(让数字变大)
- 向下取整(让数字变小)
- 保留2位小数位数(小数四舍五入)
- 产生随机数
- 对一个数进行取模运算
如果不理解一些数字取模后变成负数,不如理解一下取模的本质:除以一个数的到的余数,比如-10%-3 => -3*3 + -1=-10
其他函数
- user()查询当前用户
- md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
判断密码是否相等也需要md5函数:
- database()显示当前正在使用的数据库
- password()函数,MySQL数据库使用该函数对用户加密(数据库提供的一套更复杂的加密,常用,也是等长的)
- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值