MySQL-函数

 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

 

Least()

greatest()

返回最小值

最大值

select least(2,5,6,5); 

select greatest(2,5,6,5);

在2、5、6、5中哪个数最小,

哪个最大?

RAND():返回 0-1 之间的随机数

例1:随机生成一个三位数的随机数:select floor(rand()*900+100);

select floor(rand()*999);//错误,rand()是介于0到1的数,如果rand()小于0.1,则此式子就不满足三位数

例2:求90°正弦的值: Select Sin((90/180)*pi());

例3:求e^2自然常量: Select Exp(2)    

例4:求以10为底,100的对数的值: Select log10(100);

例5:查询3是否在4、5、6中: Select 3 in (4,5,6);

例6:查询3是否在5和9之间: Select 3 between 5 and 9;

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。

例1:比较 aa 与bb 大小: select strcmp('aa','bb');

例2:用首字母大写,其它字母小写的方式 显示雇员的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.日期和时间函数

函数

含义

显示结果

 

Sysdate()

获取系统时间

 

 

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());

例题:

返回2017-4-1第几周: Select week('2017-4-1');       //值:13

返回当前时间是星期几:select dayofweek(now());  //1表示星期天,2表示星期一…

返回2017-4-6年当中的第几天:Select dayofyear('2017-4-6');        //值:96;

返回2017-4-1时间的季度:Select quarter('2017-4-1');   //值:2

时间10:20:30转化为秒:Select time_to_sec('10:20:30');   //值:37230

3)日期的算法

a). Date_add(时间,interval 数字 时间单位)

范例:SELECT Date_add(NOW(),interval 1 day),Date_add(NOW(),interval 10 YEAR);

b). datediff(日期1, 日期2)返回两个日期之间的天数

SELECT DATEDIFF('2018-07-01','2018-07-04')  // -3

c). TIMESTAMPDIFF(时间单位,时间1,时间2)

计算两个时间之间相差的整数时间单位(FRAC_SECOND毫秒,SECOND秒,MINUTE分钟,HOUR小时,DAY天,WEEK星期,MONTH月,QUARTER季度,YEAR年)

例:TIMESTAMPDIFF(MONTH,hiredate,NOW())  //查询员工工作到今的月数

d). 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

 

作者:kerwin-chyl

文章链接:https:////www.cnblogs.com/kerwin-chyl

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

posted @ 2020-03-07 14:50  Kerwin_chyl  阅读(190)  评论(0编辑  收藏  举报