MySQL的内置函数

日期函数

函数名称描述
current_date()当前的日期
current_time()当前的时间
current_timestamp()当前时间戳,日期加时间
date(datetime)返回时间戳的日期部分
time(datetime)返回时间戳的时间部分
date_add(date,interval d_value_type)返回date加某个时间,后面参数的单位可以是year,day,minute,second
date_sub(date,interval d_value_type)返回date减某个时间,后面参数的单位可以是year,day,minute,second
datediff(date1,date2)返回两个日期的时间差,单位是天
now()返回当前日期和时间,和timestamp一样

可以配合select使用,比如:
假设一个表有一个日期列,插入时该列的值都是now(),筛选出2分钟以内插入的信息:

select * from 表名 where date_add(表的时间列,interval 2 minute) >= now();

字符串函数

函数名称描述
charset(str)返回字符串字符集
concat(string1[, …])返回一个拼接的字符串
instr(string,substring)返回substring在string中首次出现的位置,以1作为起始位置,没有就返回0
ucase(string)把目标串全部转换成大写
lcase(string)把目标串全部转换成小写
left(string,length)从string2的左边起取length个字符
length(string)返回string的字节长度
replace(str,search_str,replace_str)在str中用relpace_str替换search_str
strcmp(string1,string2)逐字符比较两个字符串的大小,忽略大小写,前者大返回1,后者大返回-1,相等返回0
substring(str,position[, length])从str的position位置开始,以1作为起始位置,取length个字符
ltrim(string) rtrim(string) rtim(string)去除左侧空格或右侧空格或两边空格

获取某一列的字符集

select charset(列名) from 表名;

计算某一列占用的字节数

select length(列名) from 表名;

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数组算作一个字节,中文表示多个字节数(与字符集编码有关)

从头开始截取一个字符串

select substring('123456',1);

注意,这里的position和C语言的不一样,这里是从1开始的

把字符串的第一个字符转换成大写

select concat(ucase(substring('目标字符串',1,1)),substring('目标字符串',2));
mysql>  select concat(ucase(substring('string',1,1)),substring('string',2)) as '转换结果';
+--------------+
| 转换结果     |
+--------------+
| String       |
+--------------+
1 row in set (0.00 sec)

数学函数

函数名称描述
abs(number)返回绝对值
bin(decimal_number)十进制换二进制
hex(decimalNumber)十进制换十六进制
conv(number,from_base,to_base)把number从from进制转换成to进制
ceiling(number)向上去整
floor(number)向下去整
format(number,decimal_places)number要保留的小数位数,四舍五入
rand()返回随机浮点数,范围是[0.0,1.0)
mod(number,denominator)取模,求余

向上取整,无论正负,都向大的方向取整:

mysql> select ceiling(10.1);
+---------------+
| ceiling(10.1) |
+---------------+
|            11 |
+---------------+
1 row in set (0.00 sec)

向下取整,无论正负,都向小的方向取整

mysql> select floor(10.9);
+-------------+
| floor(10.9) |
+-------------+
|          10 |
+-------------+
1 row in set (0.00 sec)

其他函数

user():查询当前用户

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

md5(str):对一个字符串进行md5摘要,摘要后得到一个32位定长的不重复的字符串。

mysql> select md5('str');
+----------------------------------+
| md5('str')                       |
+----------------------------------+
| 341be97d9aff90c9978347f66f945b77 |
+----------------------------------+
1 row in set (0.00 sec)

可以用来保存用户密码,其原理是通过哈希算法实现的。

database():查看当前正在使用的数据库

mysql> select database();
+------------+
| database() |
+------------+
| for_test   |
+------------+
1 row in set (0.00 sec)

password(),可以使用该函数对用户密码加密

mysql> select password('root');
+-------------------------------------------+
| password('root')                          |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set (0.00 sec)

ifnull(val1,val2):如果val1值为null,返回val2,否则返回val1,有点像三目运算符 val1 != null ? val1 : val2;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值