Mysql函数大全

1.查询结果运算:计算百分比

concat(cast((CompletedQuantity/(ScrappedQuantity+CompletedQuantity))*100 as decimal),'%')

2.null函数:

isnull(expr)
如expr为null,那么isnull()的返回值为1,否则返回值为0;

ifnull(expr1,expr2)
假如expr1不为NULL,则IFNULL()的返回值为expr1; 否则其返回值为expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境;

nullif(expr1,expr2)
如果expr1=expr2成立,那么返回值为NULL,否则返回值为expr1。这和
CASE WHEN expr1=expr2 THEN NULL 
ELSE 
  expr1 
END  相同。    
IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值 

3.连接函数:

concat(str1,str2,…)  
返回结果为连接参数产生的字符串。
注意:
MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL;Oracle只能连接2个,多个使用 || 代替concat函数

concat_ws函数
contcat_ws() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
注意:
如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值;和concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL而是把null值省略

group_concat函数
完整的语法:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
例如:以id分组,把name字段的值打印在一行,逗号分隔(默认)
select id,group_concat(name) from aa group by id;

4.复制函数:

用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数
select repeat('ab',2);

5.条件范围函数:

FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间 。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则   FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为NULL。 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
如果strlist是常量,则可以直接用IN, 否则要用find_in_set()函数。

6.日期格式转换函数:

DATE_FORMAT(date,format)————–>oracle中的to_char();
str_to_date(date,format)————–>oracle中的to_date();
ADD_MONTHS 
增加或减去月份 
MONTHS_BETWEEN(date2,date1) 
给出date2-date1的月份 
格式描述
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时 (hh:mm:ss)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
%V周 (01-53) 星期日是一周的第一天,与 %X 使用
%v周 (01-53) 星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天 (0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位

计算函数

MOD(n1,n2) 
返回一个n1除以n2的余数 ;
ABS 
返回指定值的绝对值 ;
ACOS 
给出反余弦的值 ;
ASIN 
给出反正弦的值;
ATAN 
返回一个数字的反正切值 ;
CEIL 
返回大于或等于给出数字的最小整数;
COS 
返回一个给定数字的余弦;
EXP 
返回一个数字e的n次方根 ;
FLOOR 
对给定的数字取整数;
LN -----以e为底的对数
返回一个数字的对数值;
LOG(n1,n2) 
返回一个以n1为底n2的对数 ;
POWER 
返回n1的n2次方根;
SIGN 
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 ;
SIN 
返回一个数字的正弦值;
TAN 
返回数字的正切值 ;
TANH 
返回数字n的双曲正切值 ;
SQRT 
返回数字n的根 

查询日期所在周、月起始

mysql查询某周的起始日期和终止日期
	subdate(curdate(),date_format(curdate(),'%w')-1)
	subdate(curdate(),date_format(curdate(),'%w')-7)
	查询周起止日期
	DATE_ADD( '2019-11-12', INTERVAL - WEEKDAY ( '2019-11-12' ) DAY ) week_begin,
	DATE_ADD( '2019-11-12', INTERVAL - WEEKDAY ( '2019-11-12' ) + 7 DAY ) week_end 
	
	查询月起止日期
	DATE_ADD( '2019-11-12', INTERVAL - DAY ( '2019-11-12' ) + 1 DAY ) month_begin,
	DATE_ADD( LAST_DAY( '2019-11-12' ), INTERVAL + 1 DAY ) month_end
	
	查询年起止日期
	DATE_ADD( '2019-11-12', INTERVAL - DAYOFYEAR ( '2019-11-12' ) + 1 DAY ) year_begin,
	DATE_ADD( DATE_ADD( '2019-11-12', INTERVAL - DAYOFYEAR ( '2019-11-12' ) + 1 DAY ), INTERVAL + 1 YEAR ) year_end 
	
	查询当前时间是今年的第几天、周、季
	
	DAYOFYEAR ( '20191112' ) 'day',
	WEEK ( '20191112', 1 ) week1,
	WEEKOFYEAR( '20191112' ) week2,
	QUARTER ( '20191112' ) qtr,
	floor( substr( '20191112', 5, 2 )/ 3.1 )+ 1 qtr2

DATE_ADD() 函数向日期添加指定的时间间隔。

DATE_ADD(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type可以使用的类型

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值