mysql中常用的一些函数总结

对于使用mysql作为主数据库的小伙伴们,我们经常需要使用mysql提供的一些函数来满足我们的查询需要,下面我们来一块总结一下我们经常需要用到的场景函数。

字符串函数

concat(field1,field2):

解释:连接field1字段 与 field2字段为一个新的字符串,如果与NULL 连接,其结果为NULL,如下:

select concat(name,age) from user ; #结果:houger 18

insert(field, pos,len,newstr):

解释:用于字符串的替换,将字段的值从pos位置,长度为len的字符串给替换为newstr,如下:

select insert(name,1,1,'李') from user ;
#结果 :李某某,替换name的第一个字为'李'

lower(str) / upper(str):

解释:将字符串转为 小写/大写,如下:

select lower('abc') ; #结果 :ABC

left(str,len) /right(str,len):

解释:返回字符串str 最左边/最右边 len 个字符,如果长度指定为null,将返回null(sql 5.7),如下:

select right('houger',2) ; 结果 :er

lpad(str,len,padstr) / rpad(str,len,padstr):

解释:使用字符串 panstr 对 str进行 最左边/最右边 填充,直到字符串总长度为len,如下:

select lpad('houger',10,'a') ;结果:aaaahouger

ltrim(str) /trim(str):

解释:对字符串去除 左边 /右边空格

repeat(str,count):

解释:返回str重复count次的结果,如下:

select repeat('houger',2) ;结果:hougerhouger

replace(str, from_str,to_str):

解释:将字符串str中所出现的字符串from_str,替换为to_str,如下:

select replace('houger','u','w');结果:houwer

strcmp(expr1,expr2):

解释:比较字符串expr1 和 expr2 的ascii 的值,expr1 > expr2 返回 1,反之返回-1,相等 返回 0,如下:

select strcmp('a','b'); 结果:-1

substring(str,pos,len)

解释:返回从字符串pos位置开始的len个字符串,字符串截取

select substring('houger',1,3);结果:hou

数值函数:

abs(x) :返回数值x的绝对值,如下:

select abs(-12) ; 结果:12

其他类似函数:

ceil(x) /floor(x):
#向上/向下取整数

mod(n,m):
#返回n/m 的余数,若果有一个是null ,那么值为null

rand():
#返回0-1之内的随机数值,例如 0.1234564

round(x,d):
#返回x的四舍五入结果,保留d 位小数

truncate(x,d):
#返回保留x 的 d位小数,直接截断小数位,不会四舍五入

日期和时间函数

curdate() :返回当前日期,返回格式:2018-01-06

curative():返回当前时间,返回格式:20:35:38

now():返回当前的日期 和 时间,返回格式 :2018-01-06 22:30:30

unix_timestamp(date):返回指定日期date的unix时间戳,如果不指定date,则返回当前unix的时间戳

from_unixtime(unix_timestamp):返回unix时间戳的日期格式,返回格式为:2017-06-30 12:30:30

week(date,[mode]):返回日期date为一年中的第几周

year(date):返回日期date的年份;select year(now());返回2017

hour(time):返回time的小时值。select hour(now());返回 20

minute(time):返回time的分钟值。

monthname(date):返回date的英文月份名。

month(date):返回date的数字月份

date_format(date,format):返回按字符串format格式化日期date的值,如下:

select date_format(now(),'%Y : %D %M');#返回 2017:8th:August

date_add(date, interval expr unit):返回一个日期加上一个时间间隔的值,interval是间隔类型关键字,expr是一个表达式,对应后面的类型,unit是间隔类型,如下:

select date_add(now(),interval 2 DAY);
#返回当前时间再加上2天的date值,如果是负数就是减去
select date_add(now(),interval '-2_3' YEAR_MONTH);
#返回当前时间减去2年,3个月之后的时间

datediff(expr1,expr2):返回起始时间和结束时间之间的天数。 开始时间 > 结束时间 返回正数,反之返回负数;如下:

select datediff('2018-09-10',now()); #结果:-30

其他常用函数

datebase():返回当前数据库名;

version():返回当前数据库版本;

user():返回当前登录用户名;

inet_aton(expr):返回IP地址的网络字节序表示,该函数主要用于ip地址的比较和查询,可以用来确定ip范围,

避免ip中的 . 进行比较导致的错误。如下:

select inet_aton('10.2.33.98');#结果:167911778

inet_ntoa(expr):返回由网络字节序代表的ip地址

select inet_ntoa(167911778);#结果:10.2.33.98

password(str): 返回字符串的加密版本:

select  password('houger'); #结果:*F3DCFBA1FE3E0404B234D4F2C18D4BEAC7E3C6DE

md5(str):返回字符串str的md5值

发表评论

电子邮件地址不会被公开。 必填项已用*标注