1.数字函数
函数名
含义
用法1
用法2
Rand()
返回0-1随机数
Select * from emp order by rand();随机排序
Rand(m)种子数,随机又固定的一个数字
Pi(x)
圆周率
Select pi(),pi()+0.00000000000;扩展小数位数
Abs(x)
绝对值
ABS(-5)=5;ABS(0)=0
Ceil(ceiling)(x)
往上取整
CEIL(1.25)=2;CEILING(-5.98)=-5
Floor(x)
向下取整
FLOOR(1.25)=1;FLOOR(-5.98)=-6
Round(n,m)
四舍五入
ROUND(1.25)=1;ROUND(-5.98)=-6
Round(1.25,1)=1.3
Truncate(n,m)
截断
TRUNCATE(-5.98,1)=-5.9
TRUNCATE(-1.25,0)=--1
Power/pow(m,n)
幂次方
POW(3,3)=27;POWER(-1.5,2)=2.25
POWER(-2,-1)=-0.5
Sqrt(x)
平方根
SQRT(9)=3;SQRT(-9)=null
RAND():返回 0-1 之间的随机数
2.字符串函数
函数名
含义
用法1
用法2
Char_length()
长度
CHAR_LENGTH('abc')=3;CHAR_LENGTH('1.234')=5
CHAR_LENGTH('中国')=2
Length()
长度
LENGTH('abc')=3,LENGTH('1.234')=5
LENGTH('中国')=4
Concat
CONCAT_WS()
拼接
CONCAT_WS (‘-‘,123,'abc','中国')
= 123-abc-中国
CONCAT(123,'abc','中国')= 123abc中国
Lower/upper()
大小写
LOWER('ABC'),UPPER('hello')
Trim/ltrim/rtrim
去空格
trim(' a b ') =a b;ltrim(' a b ')=a b
rtrim(' a b ')= a b
Left/right
截取
LEFT(ename,3)只取前3个字符
Substr/substring
精确截取
Substr(‘ABCD’,2,2)=BC
Substr(str,start,length)
Lpad/rpad
填充函数
RPAD(‘ABC’,5,'*')=ABC**
LPAD(str, length,填充物)
Replace
替换
replace('ABCA','A','XX')= XXBCXX
Insert
精确替换
Insert(‘ABCDE’,1,2,’XXXX’)= XXXXCDE
REVERSE(str)
字符反转
返回字符串 str ,顺序和字符顺序相反
REVERSE(‘abcd’)=dcba
Strcmp
比较
STRCMP(1,2)=-1;STRCMP(1,1)=0;STRCMP('A','a')=0;STRCMP('A','B')=-1;
STRCMP('AccA','AC')=1;STRCMP('Acc','AC')=1;STRCMP('AccB','AC')=1
Locate
字符串
定位函数
LOCATE('1','我们1大家'=3
LOCATE(1,'我们1大家')=7
LOCATE('家','我们大家')=4
LOCATE(12,113321)=0
LOCATE('CB','ABCD')=0
Null参与的运算,返回的结果都是null
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
字符串比较函数 strcmp,相同返回 0,前者>后者 返回1,其余返回-1。
范例:用首字母大写,其它字母小写的方式 显示雇员的ename
SELECT concat(LEFT(UPPER(ename),1),SUBSTR(LOWER(ename),2,LENGTH(ename)-1)) from emp;
3.系统函数和加密函数
函数
含义
Version()
当前数据库版本
SELECT VERSION(),DATABASE(),USER();
VERSION() | DATABASE() | USER()
5.0.22 | NULL | root@localhost
Database()
当前数据库名
User()
当前用户名
[old_]Password()
安全HASH算法加密
以 40 位字符串的形式显示出来的
Encode/Decode
Encode:针对blob字段进行加密; Decode:解密
Md5()
Md5算法加密
Sha()
Sha算法加密
在MySQL 5.7版本后,把以下函数给删除了
Old_password:和password()一样,但是效率差
Encode:针对blob字段,加密
Decode:解密
select encode('root',''),decode('root','');
4.日期和时间函数
函数
含义
显示结果
Curdate()
获取当前日期
2020-03-05
Now()
获取当前日期时间
2020-03-05 16:28:39
Curtime()
获取当前时间
16:28:39
Utc
世界协调时间
UTC_TIME\ UTC_DATE\ UTC_TIMESTAMP
Unix
例1:SELECT UTC_DATE(),UTC_TIME(),UTC_TIMESTAMP;
例2:UNIX 时间和当前时间的转换
SELECT FROM_UNIXTIME(1),UNIX_TIMESTAMP(NOW());
1)时间提取函数
year(),month(),day(),hour(),minute(),second()
SELECT year(NOW()),month(NOW()),day(NOW()),hour(NOW()),
minute(NOW()),second(NOW());
2)Dayofweek(),dayofmonth(),dayofyear()
dayofweek(now()) 获取当前日期是一周的第几天
SELECT DAYOFWEEK(NOW()),DAYOFMONTH(NOW()),DAYOFYEAR(NOW());
3)日期的算法
1、Date_add(时间,interval 数字 时间单位)
范例:SELECT Date_add(NOW(),interval 1 day),Date_add(NOW(),interval 10 YEAR);
2、datediff(日期1, 日期2)返回两个日期之间的天数
SELECT DATEDIFF('2018-07-01','2018-07-04') // -3
3、TIMESTAMPDIFF(时间单位,时间1,时间2)
计算两个时间之间相差的整数时间单位(FRAC_SECOND毫秒,SECOND秒,MINUTE分钟,HOUR小时,DAY天,WEEK星期,MONTH月,QUARTER季度,YEAR年)
例:TIMESTAMPDIFF(MONTH,hiredate,NOW()) //查询员工工作到今的月数
4、DATE_FORMAT(date,format)
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') //Dec 29 2008 11:45 PM
DATE_FORMAT(NOW(),'%m-%d-%Y') //12-29-2008
DATE_FORMAT(NOW(),'%d %b %y') //29 Dec 08
DATE_FORMAT(NOW(),'%d %b %Y %T:%f') //29 Dec 2008 16:25:46.635
-- 当前月的最后一天 select last_day(curdate());
-- 下月第一天 select date_add(last_day(curdate()), interval 1 day);
-- 当天为当月的第几天 select day(curdate());
-- 当月第一天 select date_add(curdate(), interval 1-(day(curdate())) day);
between '2018-07-01' and '2018-07-04' //结果是1号到3号的数据,这是因为时间范围显示的实际上只是‘2018-07-01 00:00:00’到’2018-07-04 00:00:00’之间的数据
5. 条件判断函数
If(expr,v1,v2)
如果expr表达式为真返回v1,否则返回v2
SELECT IF(2>1,2,1); //2
Ifnull(expr,v1)
如果expr表达式为null返回v1,否则返回expr表达式的值
SELECT IFNULL(2/1,'假'),IFNULL(2/0,'假'); // 2 假
Case..when
SELECT
CASE
WHEN 1>2 THEN 1
WHEN 2>3 THEN 2
ELSE 0
END; //0
SELECT
CASE 'A'
WHEN 'B' THEN 1
WHEN 'A' THEN 2
ELSE 0
END; //2
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利