MYSQL常用函数

1.字符串函数

函数作用
CONCAT(S1,S2…Sn)将S1,S2,Sn合并为一个字符串
INSERT(str,x,y,instr)将字符串str从位置x开始y个字符长的子串替换为instr
LOWER(str)变小写
UPPER(str)变大写
LEFT(str,x)返回字符串左边的x个字符
RIGHT(str,x)返回字符串右边x个字符
LPAD(str,n,pad)用pad对str最左边进行填充,直到长度为n个字符的长度
RPAD(str,n,pad)用pad对str最右边进行填充,直到长度为n个字符的长度
LTRIM(str)去掉字符串str左侧的空格
RTRIM(str)去掉字符str右侧的空格
REPEAT(str,x)将str重复x次
REPLACE(str,a,b)用字符串b替换str中所有的字符串a
STRCMP(s1,s2)比较字符s1与s2的ASCII码。
TRIM(str)去掉字符串行尾和行头的空格
SUBSTRING(str,x,y)返回str的从x开始,长度为y的子串


用法示例:

CONCAT:
select concat('aa','bb','cc'),concat('aaa',null);

结果:aabbcc | NULL
注意:任何字符串与NULL进行连接结果都是NULL。


INSERT:
select insert('thisIsAStringinsert',5,3,'Repelace');

结果:thisReplaceStringinsert
注意:Repelace部分若为NULL,结果为NULL 。


LOWER(str)UPPER(str) :
select LOWER("aaaBBBCCC"),UPPER("aaABBbccC");

结果:aaabbbccc|AAABBBCCC


LEFT(str,x)和RIGHT(STR,X):
select left("ThisIsATestString",4),right("ThisIsATestString",6);

结果:This | String
注意:若第二个参数(长度)为NULL,结果显示是一个空字符串,不是NULL


LPAD(str,n,pad)RPAD(str,n,pad):
select lpad('str','20','fill'),rpad('str','20','fill');

结果:fillfillfillfillfstr | strfillfillfillfillf
用pad的值反复填充直到长度为n。


LTRIM(str)RTRIM(str)TRIM(str): 
select ltrim(' ltrim '),rtrim(' rtrim '),trim(' trim ');
select length(ltrim(' ltrim ')),length(rtrim(' rtrim ')),length(trim(' trim '));

结果: |ltrim | rtrim|trim|
6 | 6 | 4


REPEAT(str,x):
select repeat(‘repeat’,3);


REPLACE(str,a,b):
select replace('thisIsATestString_Test','Test','Replace');

结果:thisIsAReplaceString_Replace

STRCMP(s1,s2): 
select strcmp('a','b'),strcmp('b','b'),strcmp('b','a');

结果:-1 | 0 | 1


SUBSTRING(str,x,y):
select substring('thisIsASubStringTest','8',9);

结果:SubString


2.数值函数

函数作用
ABS(x)求x的绝对值
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)等价于 x%y
LEFT(str,x)返回字符串左边的x个字符
RAND()返回0到1内的随机值
ROUND(x,y)返回x保留y位小数,四舍五入
TRUNCATE(x,y)返回x保留y位小数,截断


用法示例:

ABS(x):
select ABS(-1),ABS(1);

结果:1|1


CEIL(x):
select CEIL(-5.5),CEIL(5.5);

结果:-5|6


FLOOR(x):
select FLOOR(-5.5),FLOOR(5.5);

结果:-6|5


MOD(x,y):
select MOD(5,4);

结果:1
注意:模数和被模数任何一个为NULL结果都为NULL


RAND():产生0到1内的随机数 select RAND();
可以配合ceill或者floor使用来取得一定范围的整数。

select ceill(100*rand());

ROUND(x,y):
如果x是整数,小数位会有y个0;
如果不写y,默认y为0,即四舍五入取整。

TRUNCATE(x,y):与ROUND类似,但不进行四舍五入操作。
区别:

select round(1.23456,4),truncate(1.23456,4);

结果:1.2346|1.2345


3.日期和时间函数

函数作用
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前的日期和时间
UNIX_TIMESTAMP(date)返回日期date和UNIX时间戳
FROM_UNIXTIME返回UNIX时间戳的日期值
WEEK(date)返回日期date为一年中的第几周
YEAR(date)返回日期date的年份
HOUR(time)返回time的小时值
MINUTE(time)返回time的分钟值
MONTHNAME(date)返回date的月份名
DATE_FORMAT(date,fmt)按照字符串fmt格式化日期date值
DATE_ADD(date,INTERVAL expr type)
DATEDIFF(dateBegin,dateEnd)返回dateBegin与dateEnd直接的天数


用法示例:

CURDATE():返回当前日期值,只包含年月日

select CURDATE();

CURTIME():返回当前时间,只包含时分秒

select CURTIME();

NOW():返回值包括日期和时间,即年月日时分秒

select NOW();

UNIX_TIMESTAMP(date):返回日期date的UNIX时间戳

select UNIX_TIMESTAMP(now());

结果:1472266091


FROM_UNIXTIME:返回UNIXTIME时间戳的日期值。

select FROMUNIXTIME(1472266091)

结果:2016-08-27 10:48:11


WEEK(DATE):返回所给日期是一年中的第几周,
YEAR(DATE) :返回年份。

select WEEK(now()),YEAR(now());

结果:34 | 2016


HOUR(time):返回所给时间的小时数。参数可以是time,也可以是datetime,但不能是date
MINUTE(time):返回所给时间的分钟数。参数可以是time,也可以是datetime,但不能是date

select HOUR(now()),MINUTE(now());

结果:10 | 55


MONTHNAME(date):返回date的英文月份名称

DATE_FORMAT(date,fmt):将date按fmt格式化(格式化参数很多,详情查表)。

select DATE_FORMAT(now(),'%Y年,%c月,%e日 %H:%i:%s');

结果:2016年8月27日 11:08:59


DATE_ADD(date,INTERVAL expr type):返回与所给日期date相差INTERVAL时间段的日期。
INTERVAL为间隔类型关键字。expr为时间长度,type为类型。

select now(),date_add(now(),INTERVAL 31 DAY);

结果:2016-08-27 11:21:23 | 2016-09-27 11:21:23


DATEDIFF(date1,date2):返回两个时期相差几天

select DATEDIFF(DATE_ADD(now(),INTERVAL 1 YEAR),now());

结果:365天


4.流程函数

函数作用
IF(value,t,f)如果value为真,返回t;否则返回f
IFNULL(value1,value2)如果value1不为空返回value1,否则返回value2 等价于 value1!=NULL?value1:value2
CASE WHEN [value1] THEN [result1] … Else [default]如果value1为真,返回result1,否则返回defalut
CASE [expr] WHEN [value1] THEN[result1] … ELSE[default] END如果expr等于value1,返回result1,否则返回default


用法示例:

    select if(salary>2000,'high','low') from salary;

    select ifnull(salary,"zero") from salary;

    select case when salary<2000 then 'low' when salary=2000 then 'mid' when salary>2000 then 'high' else "zero" end from salary;

    select case salary when 1000 then 'low'  when 2000 then 'mid'  else 'high' end from salary;

5.其他常用函数

函数作用
DATABASE()返回当前数据库名
VERSION()返回当前数据库版本
USER()返回当前登录用户名
INET_ATON(IP)IP地址转数字
INET_NTOA(num)数字转回IP
PASSWORD(str)返回字符串str的加密版本
MD5(str)返回字符串str的MD5值


INET_ATON将IP转换为数字后,可以便于比较IP的大小。

参考资料:《深入浅出MySQL》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值