MySQL内置函数
🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【MySQL的学习】
📝📝本篇内容:日期函数;字符串函数;数学函数;其他函数
⬆⬆⬆⬆上一篇:MySQL的数据类型
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-
1.日期函数
| 函数名称 | 描述 |
|---|---|
current_date() |
当前日期 |
current_time() |
当前时间 |
current_timestamp() |
当前时间戳 |
date(datetime) |
返回datetime参数的日期部分,已经转成可读的日期字符串 |
date_add(date, interval d_value_type) |
在date中添加日期或时间,interval后的数值单位可以是:year、minute、second、day |
date_sub(date, interval d_value_type) |
在date中减去日期或时间,interval后的数值单位可以是:year、minute、second、day |
datediff(date1, date2) |
两个日期的差,单位是天 |
now() |
当前日期时间 |



接下来看两个案例
创建一张表,记录生日

可以看到我们插入now()函数,它的值其实是日期时间,但是我们的date类型是不包含时间的,但是我们也可以插入成功。其实函数在获取时,日期和时间是一起获取的,只不过返回时会进行省略。包括我们插入单纯的时间time()也是可以的,但是这样的设计其实并不好,应该直接报错。

创建一个留言表



查询在2分钟内发布的帖子

也可以使用反过来写

2.字符串函数
| 函数名称 | 描述 | 简单示例 |
|---|---|---|
charset(str) |
返回字符串字符集 | charset('测试') → utf8 |
concat(string2 [, ...]) |
连接字符串 | concat('a','b') → 'ab' |
instr(string, substring) |
返回substring在string中出现的位置,没有返回0 | instr('abc','b') → 2 |
ucase(string2) |
转换成大写 | ucase('abc') → 'ABC' |
lcase(string2) |
转换成小写 | lcase('ABC') → 'abc' |
left(string2, length) |
从string2中的左边起取length个字符 | left('abc',2) → 'ab' |
length(str) |
string的长度 | length('abc') → 3 |
replace(str, search_str, replace_str) |
在str中用replace_str替换search_str | replace('a1b','1','2') → 'a2b' |
strcmp(string1, string2) |
逐字符比较两字符串大小(相等返回0,前者大返回1,后者大返回-1) | strcmp('a','b') → -1 |
substring(str, position [, length]) |
从str的position开始,取length个字符(position从1开始) | substring('abcd',2,2) → 'bc' |
ltrim/rtrim/trim(string) |
去除前空格/后空格/前后空格 | trim(' abc ') → 'abc' |

instr()函数返回的substring出现的位置是从1开始的






前面虽然演示了使用方法,但是没有一些案例,接下来看一些案例
获取emp表的ename列的字符集


要求显示exam_result表中的信息,显示格式:"XXX的语文是XXX分,数学XXX分,英语XXX分

求学生表中学生姓名占用的字节数

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)
utf8中,汉字占3字节,ASCII码占1个字节,它是一个可变长编码
将EMP表中所有名字中有S的替换成'上海


一般select调用函数不会修改表中内容,除非用什么update
截取EMP表中ename字段的第二个到第三个字符

以首字母小写的方式显示所有员工的姓名

观察trim函数

trim在实际开发中还是很有用的,当进行业务处理会收到很多网络数据,要进行去报头什么的,可能会残留空格,因此可以用到它。或者在用户输入的时候,也可以会出现不应该的空格,我们使用这个函数来去除空格。不过这个函数只能去除左右空格,对中间的空格无效。

3.数学函数
| 函数名称 | 描述 |
|---|---|
abs(number) |
绝对值函数 |
bin(decimal_number) |
十进制转换二进制 |
hex(decimalNumber) |
转换成十六进制 |
conv(number, from_base, to_base) |
进制转换 |
ceiling(number) |
向上去整 |
floor(number) |
向下去整 |
format(number, decimal_places) |
格式化,保留小数位数 |
rand() |
返回随机浮点数,范围 [0.0, 1.0) |
mod(number, denominator) |
取模,求余 |
来看几个使用例子


其中-10显示的补码,虚拟机是64位机器,所以说是64位




还有两个函数是ceiling和floor,它们都是对于小数的处理,我们来看张图,来了解一下什么是向上取整,向下取整和向0取整



还有一种就是四舍五入,这个就不多说了
4.其他函数
user() 查询当前用户

md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
这个应用可以理解为我们对于用户的密码进行加密,我们看个例子

可能在大家的MySQL上使用,可能无法通过↑↓按键来翻阅上一次的SQL语句,因为这是MySQL识别到了passward,对其进行的数据保护

database()显示当前正在使用的数据库

password()函数,MySQL数据库使用该函数对用户加密,一般都是使用这个,而不是md5。不过在最新的版本中已经弃用,我这边就演示不了了
bash
select password('root');
+-------------------------------------------+
| password('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

🌸🌸MySQL内置函数大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪