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;

你可能感兴趣的:(mysql,数据库,sql)