MySQL常用内置函数分日期(now、date_add)、字符串(concat、replace、substring)、数学(ceiling、floor)及其他(user、md5、ifnull)类别,分别用于时间操作、文本处理、数值取整及用户、加密、空值判断等场景。
上一篇文章里,我们花了不少篇幅把MySQL的基本查询操作讲得比较透,内容确实有点多。今天这篇就相对轻松一些——主要聊聊MySQL里那些常用的内置函数,看看它们各自能干什么、怎么用。话不多说,直接进入正题。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
上面这张图汇总了常见的日期函数,从描述里基本能猜到各自的作用。下面直接上例子,实操一下这些函数到底怎么玩。


建一张表来记录生日,插入数据时就可以直接用那些日期函数来获取对应的值。上面我们用了前三个函数来获取当前时间,不过因为 birthday 字段的类型是 date,所以取到的只有日期部分,时间部分被截掉了。从结果里也能清楚看到日期的格式,具体时间也是同样的套路。



在这个例子里,可以用 now() 或 current_timestamp 来记录留言时的具体时间,两者都能拿到当前的时间戳。当然,这个例子还能玩出点花样:
这就要用到上面的 date() 函数了:

通过 date() 把日期部分单独取出来,时间部分就不显示了。
先理清逻辑:两分钟之内发布,意味着 sendtime + 2分钟 > 当前时间,或者 当前时间 - 2分钟 < sendtime。下面实操一下:

先插入一条新数据,然后用 where 条件筛选,条件里用 date_add 或 date_sub 来做时间加减,单位是分钟,所以后面跟着 minute。从结果看,只有刚插入的那条数据满足条件,符合预期。

上面这些是MySQL里常见的字符串函数,有些和C/C++里学过的函数名字一样,功能也相似。直接看几个例子:

用 charset() 函数就能查到对应字段的字符集,默认是utf8,查出来也就是utf8。

这个用 concat() 函数拼接字符串就行,把各科成绩按格式串起来。整体不难,不啰嗦了。

用 length() 来计算每个名字占用的字节数。之前提过,utf8字符集下,一个汉字占3个字节,所以三个字的名字占9个字节,两个字占6个字节。如果是字母或数字,只占1个字节。

用 replace() 函数,第二个参数是被替换的字符,第三个是替换成的内容。从结果看,每个名字里的“S”都被换成了“上海”。

注意,这只是查询时的显示效果,并没有真正修改表中的数据,ename 字段还是原来的样子。

这里用 substring() 函数。为了对比更清晰,把完整的 ename 也打印出来。可以看到截取结果正确。下标从1开始(不是0),所以第二个字符对应的是2。

这个稍微复杂一点,不能直接用 lcase() 只改变首字母而不动其他字母。做法是:把首字母和剩余部分拆开,单独处理首字母,再用 concat() 拼回去。

数学函数大部分在C/C++里都见过,这里只重点提一下 ceiling() 和 floor()——向上取整和向下取整。
向上取整,就是取比当前值大的整数。来看例子:

如果值是3.1或3.9,向上取整后就是4;如果是负数,比如-3.1、-3.9,向上取整后就是-3。无论正负,结果都比原值大。

上面的查询结果完全验证了这一点。
向下取整正好相反,取比当前值小的整数:

3.1或3.9向下取整后是3;-3.1、-3.9向下取整后是-4。结果都比原值小。

同样用例子验证一下,结果没毛病。
最后再简单介绍几个函数:

第一个是 user(),查询当前用户。

第二个是 md5(),对字符串做MD5摘要,得到一个32位的字符串。

第三个是 ifnull(),如果第一个参数为 null,就返回第二个参数,否则返回第一个参数。
以上就是一文吃透MySQL必备的常用内置函数的全部内容。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述