MySQL数据库 函数库

今天花了点时间把MySQL中可能用到的函数进行了一个归纳总结,也方便以后可查询。

MYSQL函数:

1、数学函数

ABS                                                                   #绝对值
 
>SELESC ABS(-0.2),ABS(-1.2);
0.2  1.2

pi()
 
>SELECT pi();                        #默认保留6位小数
3.141593   

SQRT(X)                                                         # X平方根
 
>select SQRT(9),SQRT(40),SQRT(-9);
3  6.324555320336759  NULL

MOD(X,Y)                                                        # X被Y除的余数
 
>SELECT MOD(31,8),MOD(241,10);
7  1

CEIL(X) FLOOR(X)
 
>SELECT CEIL(-2.2),CEIL(3.2),FLOOR(-2.2),FLOOR(3.2);
-2  4  -3  3

FORMAT(x,n)                                                # X保留小数点后n位
 
>SELECT FORMAT(1234.123456),FORMAT(12.3,4);
1234.1234   12.3000

RAND()  RAND(X)                                        #若带参数,参数相同则产生随机数相同
 
>SELECT RAND();
0.8765061524477845

ROUND(X)                                                    # X整数四舍五入
ROUND(X,Y)                                                # X小数点后Y位四舍五入
TRUNCATE(X,Y)                                         # X小数点后Y位直接截去
 
>SELECT ROUND(2.3456),ROUND(2.3456,2),TRUNCATE(2.3456,2);
2  2.35  2.34

SIGN(X)                                                        #符号函数,X为负输出-1,X为0输出0,X为正输出1
 
>SELECT SIGN(-21),SIGN(0),SIGN(21);
-1  0  1

POW(X,Y)                                                    # X^Y的乘方值
EXP(X)                                                         # e^X的乘方值
 
>SELECT POW(2,2),POW(2,-2),EXP(3);
4  0.25  20.085536923187668

LOG(X)                                                        #X对于e的对数
LOG10(X)                                                   #X对于10的对数
 
>SELECT LOG(10),LOG10(10);
2.302585092994046   1

RADIANS(X)                                                #角度转换为弧度
DEGREES(X)                                             #弧度转换为角度
 
>RADIANS(180),DEGREES(PI());
3.141592653589793   180

SIN(X)                                                          #正弦函数
COS(X)
TAN(X)
COT(X)
ASIN(X)                                                        #反正弦函数
ACOS(X)
ATAN(X)
ACOT(X)
>SELECT SIN(1),ASIN(1),ASIN(3);
0.8414709848078965  1.5707963267948966  NULL

 


2、字符串函数

CHAR_LENGTH
 
>SELECT CHAR_LENGTH('DATE');
4

CONCAT(s1,s2……)                                 #将s1、s2的连接起来。如果有NULL,则直接返回NULL
CONCAT_WS(X,s1,s2……)                     #将s1、s2等用X连接起来。如果X为NULL,则直接返回NULL
 
>SELECT CONCAT('MYSQL','123'),CONCAT('123',NULL);
MYSQL123   NULL
>SELECT CONCAT_WS('-','1','w','2'),CONCAT_WS(NULL,'1','W'),CONCAT_WS('*','1',NULL,'2');
1-w-2   NULL   1*2

INSERT(s1,x,len,s2)                                #返回s1,从s1的x处被s2的len个字符取代
 
>SELECT INSERT('MYSQL',2,4,'WHAT'),INSERT('MYSQL',-1,2,'WHAT'),INSERT('MYSQL',2,100,'WHAT');
MWHAT  MYSQL  MWHAT

LOWER(X) LCASE(X)                              #转换为小写
UPPER(X) UCASE(X)                              #转换为大写
 
>SELECT LOWER('Be');
be

LEFT(s,n)                                                  #返回s最左边n个字符
RIGHT(s,n)                                               #返回s最右边n个字符
 
>SELECT LEFT('football',5),RIGHT('football');
footb   ball

LTRIM(X)                                                   #去掉X左边空格
RTRIM(X)                                                  #去掉X右边空格
TRIM(X)                                                     #去掉X两边空格
 
>SELECT CONCAT('(','LTRIM(   ball )',')');
(ball )

TRIM(s1 FROM s)                                  #删除s中两端的s1,如果s1未指定,则为空格
 
>SELECT TRIM('xy'FORM'xyxbooxyxylxyxxyxy');
xbooxyxylxyx

REPEAT(s1,n)
 
>SELECT REPEAT('MYSQL',3);
MYSQLMYSQLMYSQL

REPLACE(s,s1,s2)                              #用s2代替s中的所有s1
 
>SELECT REPLACE('xxx.mysql.com','x','w');
www.mysql.com

LOCATE(s1,s)                                     #返回s1在s中的位置
POSITION(s1 IN s)                             #返回s1在s中的位置
INSTR(s,s1)                                         #返回s1在s中的位置
 
>SELECT LOCATE('ball','football');
5

REVERSE(s)                                       #字符串倒序

3、时间函数

CURDATE()                                               #输出当前日期
CURRENT_DATE()                                  #输出当前日期
 
>SELECT CURDATE(),CURDATE()+0;     # +0相当于数值型
2014-07-21   20140721

CURRENT_TIMESTAMP()                      #输出当前日期及时间
LOCALTIME()                                            #输出当前日期及时间
NOW()                                                        #输出当前日期及时间
SYSDATE()                                                #输出当前日期及时间
 
>SELECT NOW();
2014-07-21 10:28:43

MONTH(date)                                           #输出date的月份
MONTHNAME(date)
 
>SELECT MONTH('2014-07-21'),MONTHNAME('2014-07-21');
7    July

DAYNAME(date)                                     #输出date的星期
DAYOFWEEK(date)                               #输出日期对应的周索引,星期天为1,星期一为2……
WEEKDAY(date)                                     #输出工作日索引,周一为0,星期二为1……
WEEK(date)                                            #输出d是一年中的第几周,可以设置第二个参数从星期一还是星期天算起
WEEKOFYEAR(date)

DATEOFYEAR(date)                             #输出date在在一年中的位置,1~366
DAYOFMONTH(date)                            #输出date在月中的位置,1~31
YEAR(date)                                             #输出date的年份
QUARTER(date)                                    #输出date的季度值,1~4

HOUR(date)
MIMUTE(date)
SECOND(date)

EXTRECT(type FROM date)  #按照type类型输出
 
>SELECT EXTRACT(YEAR FORM NOW()),EXTRACT(YEAR_MOUTH FROM NOW()),EXTRACT(DAY_SECOND FROM NOW());
2014  201407 165239
  
TIME_TO_SEC                                        #时间转换为秒数
SEC_TO_TIME                                        #秒数转换为时间

***DATE_FORMAT()函数***实现将时间格式化转换

IF(EXPR,v1,v2)                                        #EXPR为真则输出v1,否则输出v2
 
>SELECT IF(1>2,1,2);
2

IFNULL(v1,v2)                                         #v1不为NULL,输出v1;否则输出v2
 
>SELECT IFNULL(NULL,10);
10

CASE
>SELECT CASE WHEN 1<0 THEN 'true' ELSE 'false' END;
false

 

 

 


4、加密与解密函数

PASSWORD                                           #PASSWORD函数是不可逆
 
>SELECT PASSWORD('password');
*2470C0C06DEE……

MD5(s)
 
>SELECT MD5('password');
5f4dcc3b5aa……

ENCODE(s,str)                                      #用str加密s
 
>SELECT ENCODE('password','new');
一段乱码

DECODE与ENCODE对应
DECODE(s,str)                                      #用str对s进行解码
 
>SELECT DECODE(ENCODE('password','new'),'new');
password

 

 


5、其他函数
进制转换函数
CONV(X,FROM_BASE,TO_BASE)                     # X从FROM进制转换到TO进制
>SELECT CONV(111,2,8);
7

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

参考文献:

刘增杰  《MySQL 5.5》一书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值