当前位置:Gxlcms > 数据库问题 > 五、MySQL函数

五、MySQL函数

时间:2021-07-01 10:21:17 帮助过:3人阅读

绝对值函数ABS(x)

  1. mysql> SELECT ABS(2),ABS(-3.3),ABS(-33);
  2. +--------+-----------+----------+
  3. | ABS(2) | ABS(-3.3) | ABS(-33) |
  4. +--------+-----------+----------+
  5. |      2 |       3.3 |       33 |
  6. +--------+-----------+----------+
  7. 1 row in set (0.00 sec)

返回圆周率函数PI()

  1. mysql> SELECT PI();
  2. +----------+
  3. | PI()     |
  4. +----------+
  5. | 3.141593 |
  6. +----------+
  7. 1 row in set (0.00 sec)

平方根函数SQRT(x)

  1. mysql> SELECT SQRT(9),SQRT(30),SQRT(-30);
  2. +---------+-------------------+-----------+
  3. | SQRT(9) | SQRT(30)          | SQRT(-30) |
  4. +---------+-------------------+-----------+
  5. |       3 | 5.477225575051661 |      NULL |
  6. +---------+-------------------+-----------+
  7. 1 row in set (0.00 sec)

求余函数MOD(x,y)

  1. mysql> SELECT MOD(31,8),MOD(234,8),MOD(45.5,6);
  2. +-----------+------------+-------------+
  3. | MOD(31,8) | MOD(234,8) | MOD(45.5,6) |
  4. +-----------+------------+-------------+
  5. |         7 |          2 |         3.5 |
  6. +-----------+------------+-------------+
  7. 1 row in set (0.00 sec)

获取整数函数CEIL(x)、CEILING(x)、FLOOR(x)

  1. mysql> SELECT CEIL(-3.35),CEILING(3.35);   #返回不小于x的最小整数
  2. +-------------+---------------+
  3. | CEIL(-3.35) | CEILING(3.35) |
  4. +-------------+---------------+
  5. |          -3 |             4 |
  6. +-------------+---------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT FLOOR(-3.35),FLOOR(3.35);    #返回不大于x的最大整数
  9. +--------------+-------------+
  10. | FLOOR(-3.35) | FLOOR(3.35) |
  11. +--------------+-------------+
  12. |           -4 |           3 |
  13. +--------------+-------------+
  14. 1 row in set (0.00 sec)

获取随机数函数RAND()、RAND(x)

  1. mysql> SELECT RAND(),RAND(),RAND();        #返回0-1之间的随机数
  2. +--------------------+--------------------+--------------------+
  3. | RAND()             | RAND()             | RAND()             |
  4. +--------------------+--------------------+--------------------+
  5. | 0.8727586752481373 | 0.6464434700519252 | 0.6139413552488585 |
  6. +--------------------+--------------------+--------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT RAND(10),RAND(10),RAND(11);  #x用作种子值用来产生重复序列
  9. +--------------------+--------------------+-------------------+
  10. | RAND(10)           | RAND(10)           | RAND(11)          |
  11. +--------------------+--------------------+-------------------+
  12. | 0.6570515219653505 | 0.6570515219653505 | 0.907234631392392 |
  13. +--------------------+--------------------+-------------------+
  14. 1 row in set (0.00 sec)

函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

  1. mysql> SELECT ROUND(-1.14),ROUND(1.67),ROUND(1.15); #返回最接近x的整数对x值进行四舍五入
  2. +--------------+-------------+-------------+
  3. | ROUND(-1.14) | ROUND(1.67) | ROUND(1.15) |
  4. +--------------+-------------+-------------+
  5. |           -1 |           2 |           1 |
  6. +--------------+-------------+-------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT ROUND(-1.14,1),ROUND(1.67,0),ROUND(1.15,-1);
  9. +----------------+---------------+----------------+
  10. | ROUND(-1.14,1) | ROUND(1.67,0) | ROUND(1.15,-1) |
  11. +----------------+---------------+----------------+
  12. |           -1.1 |             2 |              0 |
  13. +----------------+---------------+----------------+
  14. 1 row in set (0.00 sec)   #返回最接近x的整数值保留小数点后y位y为负数将保留x小数点左边y位
  15. mysql> SELECT TRUNCATE(1.31,1),TRUNCATE(1.99,1),TRUNCATE(1.99,0);
  16. +------------------+------------------+------------------+
  17. | TRUNCATE(1.31,1) | TRUNCATE(1.99,1) | TRUNCATE(1.99,0) |
  18. +------------------+------------------+------------------+
  19. |              1.3 |              1.9 |                1 |
  20. +------------------+------------------+------------------+
  21. 1 row in set (0.00 sec)  #返回被舍去至小数点后y位的数字x

符号函数SIGN(x)

  1. mysql> SELECT SIGN(-21),SIGN(0),SIGN(21);
  2. +-----------+---------+----------+
  3. | SIGN(-21) | SIGN(0) | SIGN(21) |
  4. +-----------+---------+----------+
  5. |        -1 |       0 |        1 |
  6. +-----------+---------+----------+
  7. 1 row in set (0.00 sec)

幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

  1. mysql> SELECT POW(2,2),POWER(2,2),POW(2,-2),POWER(2,-2);#返回x的y次方
  2. +----------+------------+-----------+-------------+
  3. | POW(2,2) | POWER(2,2) | POW(2,-2) | POWER(2,-2) |
  4. +----------+------------+-----------+-------------+
  5. |        4 |          4 |      0.25 |        0.25 |
  6. +----------+------------+-----------+-------------+
  7. 1 row in set (0.04 sec)  
  8. mysql> SELECT EXP(3),EXP(-3),EXP(0);   #返回以e为底的x次方
  9. +--------------------+----------------------+--------+
  10. | EXP(3)             | EXP(-3)              | EXP(0) |
  11. +--------------------+----------------------+--------+
  12. | 20.085536923187668 | 0.049787068367863944 |      1 |
  13. +--------------------+----------------------+--------+
  14. 1 row in set (0.02 sec)

对数运算函数LOG(x)和LOG10(x)

  1. mysql> SELECT LOG(3),LOG(-3);  #返回x的自然对数x相对于基数e的对数
  2. +--------------------+---------+
  3. | LOG(3)             | LOG(-3) |
  4. +--------------------+---------+
  5. | 1.0986122886681098 |    NULL |
  6. +--------------------+---------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT LOG10(2),LOG10(100),LOG10(-100);  #返回x相对于基数10的对数
  9. +--------------------+------------+-------------+
  10. | LOG10(2)           | LOG10(100) | LOG10(-100) |
  11. +--------------------+------------+-------------+
  12. | 0.3010299956639812 |          2 |        NULL |
  13. +--------------------+------------+-------------+
  14. 1 row in set (0.00 sec)

角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)

  1. mysql> SELECT RADIANS(90),RADIANS(180);   #角度转化为弧度
  2. +--------------------+-------------------+
  3. | RADIANS(90)        | RADIANS(180)      |
  4. +--------------------+-------------------+
  5. | 1.5707963267948966 | 3.141592653589793 |
  6. +--------------------+-------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT DEGREES(PI()),DEGREES(PI()/2);#弧度转化为角度
  9. +---------------+-----------------+
  10. | DEGREES(PI()) | DEGREES(PI()/2) |
  11. +---------------+-----------------+
  12. |           180 |              90 |
  13. +---------------+-----------------+
  14. 1 row in set (0.00 sec)

正弦函数SIN(x)和反正弦函数ASIN(x)

  1. mysql> SELECT SIN(1),ROUND(SIN(PI()));
  2. +--------------------+------------------+
  3. | SIN(1)             | ROUND(SIN(PI())) |
  4. +--------------------+------------------+
  5. | 0.8414709848078965 |                0 |
  6. +--------------------+------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT ASIN(3),ASIN(0.84);
  9. +---------+--------------------+
  10. | ASIN(3) | ASIN(0.84)         |
  11. +---------+--------------------+
  12. |    NULL | 0.9972832223717998 |
  13. +---------+--------------------+
  14. 1 row in set (0.00 sec)

余弦函数COS(x)和反余弦函数ACOS(x)

  1. mysql> SELECT COS(1), COS(PI()),COS(0);
  2. +--------------------+-----------+--------+
  3. | COS(1)             | COS(PI()) | COS(0) |
  4. +--------------------+-----------+--------+
  5. | 0.5403023058681398 |        -1 |      1 |
  6. +--------------------+-----------+--------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT ACOS(1),ACOS(0.54),ACOS(0);
  9. +---------+--------------------+--------------------+
  10. | ACOS(1) | ACOS(0.54)         | ACOS(0)            |
  11. +---------+--------------------+--------------------+
  12. |       0 | 1.0003592173949747 | 1.5707963267948966 |
  13. +---------+--------------------+--------------------+
  14. 1 row in set (0.00 sec)

正切函数TAN(X)、反正切函数ATAN(x)和余切函数COT(x)

  1. mysql> SELECT TAN(0.3),TAN(PI()/4);
  2. +---------------------+--------------------+
  3. | TAN(0.3)            | TAN(PI()/4)        |
  4. +---------------------+--------------------+
  5. | 0.30933624960962325 | 0.9999999999999999 |
  6. +---------------------+--------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT ATAN(1),ATAN(0.393);   
  9. +--------------------+---------------------+
  10. | ATAN(1)            | ATAN(0.393)         |
  11. +--------------------+---------------------+
  12. | 0.7853981633974483 | 0.37445736689641174 |
  13. +--------------------+---------------------+
  14. 1 row in set (0.00 sec)
  15. mysql> SELECT COT(0.3),1/TAN(0.3);
  16. +--------------------+--------------------+
  17. | COT(0.3)           | 1/TAN(0.3)         |
  18. +--------------------+--------------------+
  19. | 3.2327281437658275 | 3.2327281437658275 |
  20. +--------------------+--------------------+
  21. 1 row in set (0.00 sec)

5.2、字符串函数

计算字符串字符数CHAR_LENGTH(str)

  1. mysql> SELECT CHAR_LENGTH(‘DATE‘),CHAR_LENGTH(‘egg‘);
  2. +---------------------+--------------------+
  3. | CHAR_LENGTH(‘DATE‘) | CHAR_LENGTH(‘egg‘) |
  4. +---------------------+--------------------+
  5. |                   4 |                  3 |
  6. +---------------------+--------------------+
  7. 1 row in set (0.00 sec)

计算字符串字节长度LENGTH(str)

  1. mysql> SELECT LENGTH(‘DATE‘),LENGTH(‘egg‘);          
  2. +----------------+---------------+
  3. | LENGTH(‘DATE‘) | LENGTH(‘egg‘) |
  4. +----------------+---------------+
  5. |              4 |             3 |
  6. +----------------+---------------+
  7. 1 row in set (0.00 sec)

合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,)

  1. mysql> SELECT CONCAT(‘My SQL‘,‘5.6‘),CONCAT(‘My SQL‘,‘5.6‘,NULL);
  2. +------------------------+-----------------------------+
  3. | CONCAT(‘My SQL‘,‘5.6‘) | CONCAT(‘My SQL‘,‘5.6‘,NULL) |
  4. +------------------------+-----------------------------+
  5. | My SQL5.6              | NULL                        |
  6. +------------------------+-----------------------------+
  7. 1 row in set (0.00 sec)  #连接多个字符串出现NULL时返回值为NULL
  8. mysql> SELECT CONCAT_WS(‘-‘,‘My SQL‘,‘5.6‘),CONCAT_WS(‘-‘,‘My SQL‘,‘5.6‘,NULL);
  9. +-------------------------------+------------------------------------+
  10. | CONCAT_WS(‘-‘,‘My SQL‘,‘5.6‘) | CONCAT_WS(‘-‘,‘My SQL‘,‘5.6‘,NULL) |
  11. +-------------------------------+------------------------------------+
  12. | My SQL-5.6                    | My SQL-5.6                         |
  13. +-------------------------------+------------------------------------+
  14. 1 row in set (0.00 sec)  #以x为连接符连接多个字符串出现NULL时忽略NULL

替换字符串函数INSERT(s1,x,len,s2)

  1. mysql> SELECT INSERT(‘Quest‘,2,4,‘What‘) AS col1,
  2.     -> INSERT(‘Quest‘,-1,4,‘What‘) AS col2, 
  3.     -> INSERT(‘Quest‘,3,100,‘What‘) AS col3;
  4. +-------+-------+--------+
  5. | col1  | col2  | col3   |
  6. +-------+-------+--------+
  7. | QWhat | Quest | QuWhat |
  8. +-------+-------+--------+
  9. 1 row in set (0.00 sec)

字母大小写转换函数LOWER(str)、UPPER(str)

  1. mysql> SELECT LOWER(‘BUFF‘),LCASE(‘Well‘);
  2. +---------------+---------------+
  3. | LOWER(‘BUFF‘) | LCASE(‘Well‘) |
  4. +---------------+---------------+
  5. | buff          | well          |
  6. +---------------+---------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT UPPER(‘buff‘),UCASE(‘Well‘);
  9. +---------------+---------------+
  10. | UPPER(‘buff‘) | UCASE(‘Well‘) |
  11. +---------------+---------------+
  12. | BUFF          | WELL          |
  13. +---------------+---------------+
  14. 1 row in set (0.00 sec)

获取指定长度的字符串函数LEFT(s,n)和RIGHT(s,n)

  1. mysql> SELECT LEFT(‘FOOTBALL‘,5);
  2. +--------------------+
  3. | LEFT(‘FOOTBALL‘,5) |
  4. +--------------------+
  5. | FOOTB              |
  6. +--------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT RIGHT(‘FOOTBALL‘,5);
  9. +---------------------+
  10. | RIGHT(‘FOOTBALL‘,5) |
  11. +---------------------+
  12. | TBALL               |
  13. +---------------------+
  14. 1 row in set (0.00 sec)

填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

  1. mysql> SELECT LPAD(‘HELLO‘,4,‘??‘),LPAD(‘HELLO‘,10,‘??‘);
  2. +----------------------+-----------------------+
  3. | LPAD(‘HELLO‘,4,‘??‘) | LPAD(‘HELLO‘,10,‘??‘) |
  4. +----------------------+-----------------------+
  5. | HELL                 | ?????HELLO            |
  6. +----------------------+-----------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT RPAD(‘HELLO‘,4,‘??‘),RPAD(‘HELLO‘,10,‘??‘);
  9. +----------------------+-----------------------+
  10. | RPAD(‘HELLO‘,4,‘??‘) | RPAD(‘HELLO‘,10,‘??‘) |
  11. +----------------------+-----------------------+
  12. | HELL                 | HELLO?????            |
  13. +----------------------+-----------------------+
  14. 1 row in set (0.00 sec)

删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

  1. mysql> SELECT ‘( BOOK )‘,CONCAT(‘(‘,LTRIM(‘ BOOK ‘),‘)‘);  
  2. +----------+---------------------------------+
  3. | ( BOOK ) | CONCAT(‘(‘,LTRIM(‘ BOOK ‘),‘)‘) |
  4. +----------+---------------------------------+
  5. | ( BOOK ) | (BOOK )                         |
  6. +----------+---------------------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT ‘( BOOK )‘,CONCAT(‘(‘,RTRIM(‘ BOOK ‘),‘)‘); 
  9. +----------+---------------------------------+
  10. | ( BOOK ) | CONCAT(‘(‘,RTRIM(‘ BOOK ‘),‘)‘) |
  11. +----------+---------------------------------+
  12. | ( BOOK ) | ( BOOK)                         |
  13. +----------+---------------------------------+
  14. 1 row in set (0.00 sec)
  15. mysql> SELECT ‘( BOOK )‘,CONCAT(‘(‘,TRIM(‘ BOOK ‘),‘)‘); 
  16. +----------+--------------------------------+
  17. | ( BOOK ) | CONCAT(‘(‘,TRIM(‘ BOOK ‘),‘)‘) |
  18. +----------+--------------------------------+
  19. | ( BOOK ) | (BOOK)                         |
  20. +----------+--------------------------------+
  21. 1 row in set (0.00 sec)

删除指定字符串的函数TRIM(s1 FROM s)

  1. mysql> SELECT TRIM(‘XY‘ FROM ‘ASHDLADHXYQWEPIXY‘);
  2. +-------------------------------------+
  3. | TRIM(‘XY‘ FROM ‘ASHDLADHXYQWEPIXY‘) |
  4. +-------------------------------------+
  5. | ASHDLADHXYQWEPI                     |
  6. +-------------------------------------+
  7. 1 row in set (0.00 sec)

重复生成字符串的函数REPEAT(s,n)

  1. mysql> SELECT REPEAT(‘MYSQL‘,5);
  2. +---------------------------+
  3. | REPEAT(‘MYSQL‘,5)         |
  4. +---------------------------+
  5. | MYSQLMYSQLMYSQLMYSQLMYSQL |
  6. +---------------------------+
  7. 1 row in set (0.00 sec)

空格函数SPACE(n)

  1. mysql> SELECT CONCAT(‘(‘,SPACE(3),‘)‘);
  2. +--------------------------+
  3. | CONCAT(‘(‘,SPACE(3),‘)‘) |
  4. +--------------------------+
  5. | (   )                    |
  6. +--------------------------+
  7. 1 row in set (0.00 sec)

替换函数REPLACE(s,s1,s2)

  1. mysql> SELECT REPLACE(‘XXX.MYSQL.COM‘,‘X‘,‘W‘);
  2. +----------------------------------+
  3. | REPLACE(‘XXX.MYSQL.COM‘,‘X‘,‘W‘) |
  4. +----------------------------------+
  5. | WWW.MYSQL.COM                    |
  6. +----------------------------------+
  7. 1 row in set (0.00 sec)

比较字符串大小的函数STRCMP(s1,s2)

  1. mysql> SELECT STRCMP(‘TXT‘,‘TXT2‘),STRCMP(‘TXT2‘,‘TXT‘),STRCMP(‘TXT‘,‘TXT‘);
  2. +----------------------+----------------------+---------------------+
  3. | STRCMP(‘TXT‘,‘TXT2‘) | STRCMP(‘TXT2‘,‘TXT‘) | STRCMP(‘TXT‘,‘TXT‘) |
  4. +----------------------+----------------------+---------------------+
  5. |                   -1 |                    1 |                   0 |
  6. +----------------------+----------------------+---------------------+
  7. 1 row in set (0.00 sec)

获取字符串的函数SUBSTRING(s,n,len)和MID(s,n,len)

  1. mysql> SELECT SUBSTRING(‘BREAKFAST‘,5) AS col1,  从第5个位置到结尾的字符串
  2.     -> SUBSTRING(‘BREAKFAST‘,5,3) AS col2,       从第5个位置开始长度3的子字符串
  3.     -> SUBSTRING(‘lunch‘,-3) AS col3,            从结尾开始第3个位置到字符串结尾
  4.     -> SUBSTRING(‘lunch‘,-5,3) AS col4;          从结尾开始第5个位置长度为3的自字符串
  5. +-------+------+------+------+
  6. | col1  | col2 | col3 | col4 |
  7. +-------+------+------+------+
  8. | KFAST | KFA  | nch  | lun  |
  9. +-------+------+------+------+
  10. 1 row in set (0.00 sec)

匹配子串开始位置的函数LOCATE(s1,s)、POSITION(s1 IN s)、INSTR(s,s1)

  1. mysql> SELECT LOCATE(‘BALL‘,‘FOOTBALL‘),POSITION(‘BALL‘ IN ‘FOOTBALL‘),IN
  2. STR(‘FOOTBALL‘,‘BALL‘);
  3. +---------------------------+--------------------------------+--------------------------+
  4. | LOCATE(‘BALL‘,‘FOOTBALL‘) | POSITION(‘BALL‘ IN ‘FOOTBALL‘) | INSTR(‘FOOTBALL‘,‘BALL‘) |
  5. +---------------------------+--------------------------------+--------------------------+
  6. |                         5 |                              5 |                        5 |
  7. +---------------------------+--------------------------------+--------------------------+
  8. 1 row in set (0.00 sec)

字符串逆序函数REVERSE(s)

  1. mysql> SELECT REVERSE(‘ABCD‘);
  2. +-----------------+
  3. | REVERSE(‘ABCD‘) |
  4. +-----------------+
  5. | DCBA            |
  6. +-----------------+
  7. 1 row in set (0.00 sec)

返回指定位置的字符串函数ELT(n,s1,s2,...)

  1. mysql> SELECT ELT(3,‘1TH‘,‘2TH‘,‘3TH‘),ELT(3,‘NET‘,‘OS‘);
  2. +--------------------------+-------------------+
  3. | ELT(3,‘1TH‘,‘2TH‘,‘3TH‘) | ELT(3,‘NET‘,‘OS‘) |
  4. +--------------------------+-------------------+
  5. | 3TH                      | NULL              |
  6. +--------------------------+-------------------+
  7. 1 row in set (0.00 sec)

返回指定字符串位置的函数FIELD(s,s1,s2,...)

  1. mysql> SELECT FIELD(‘HI‘,‘HIHI‘,‘HEY‘,‘HI‘,‘BAS‘) AS clo1,
  2.     -> FIELD(‘HI‘,‘HEY‘,‘LO‘) AS clo2;
  3. +------+------+
  4. | clo1 | clo2 |
  5. +------+------+
  6. |    3 |    0 |
  7. +------+------+
  8. 1 row in set (0.00 sec)

返回子串位置的函数FIND_IN_SET(s1,s2)

  1. mysql> SELECT FIND_IN_SET(‘hi‘,‘hihi,hey,hi,bas‘);
  2. +-------------------------------------+
  3. | FIND_IN_SET(‘hi‘,‘hihi,hey,hi,bas‘) |
  4. +-------------------------------------+
  5. |                                   3 |
  6. +-------------------------------------+
  7. 1 row in set (0.00 sec)

选取字符串的函数MAKE_SET(x,s1,s2,...)

  1. mysql> SELECT MAKE_SET(1,‘A‘,‘B‘,‘C‘) as col1, 
  2.     -> MAKE_SET(1 | 4,‘hello‘,‘nice‘,‘world‘) as col2, 
  3.     -> MAKE_SET(1 | 4,‘hello‘,‘nice‘,NULL,‘world‘) as col3,
  4.     -> MAKE_SET(0,‘a‘,‘b‘,‘c‘) as col4;                        
  5. +------+-------------+-------+------+
  6. | col1 | col2        | col3  | col4 |
  7. +------+-------------+-------+------+
  8. | A    | hello,world | hello |      |
  9. +------+-------------+-------+------+
  10. 1 row in set (0.00 sec)


5.3、日期和时间函数

获取当前日期的函数CURDATE()、CURRENT_DATE()

  1. mysql> SELECT CURDATE(),CURRENT_DATE(),CURDATE()+0;
  2. +------------+----------------+-------------+
  3. | CURDATE()  | CURRENT_DATE() | CURDATE()+0 |
  4. +------------+----------------+-------------+
  5. | 2017-08-01 | 2017-08-01     |    20170801 |
  6. +------------+----------------+-------------+
  7. 1 row in set (0.00 sec)

获取当前时间的函数CURTIME()、CURRENT_TIME()

  1. mysql> SELECT CURTIME(),CURRENT_TIME(),CURTIME()+0;
  2. +-----------+----------------+---------------+
  3. | CURTIME() | CURRENT_TIME() | CURTIME()+0   |
  4. +-----------+----------------+---------------+
  5. | 18:54:38  | 18:54:38       | 185438.000000 |
  6. +-----------+----------------+---------------+
  7. 1 row in set (0.00 sec)

获取当前日期和时间的函数CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()

  1. mysql> SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE();
  2. +---------------------+---------------------+---------------------+---------------------+
  3. | CURRENT_TIMESTAMP() | LOCALTIME()         | NOW()               | SYSDATE()           |
  4. +---------------------+---------------------+---------------------+---------------------+
  5. | 2017-08-01 18:55:48 | 2017-08-01 18:55:48 | 2017-08-01 18:55:48 | 2017-08-01 18:55:48 |
  6. +---------------------+---------------------+---------------------+---------------------+
  7. 1 row in set (0.00 sec)

UNIX时间戳函数

  1. mysql> SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),NOW();  
  2. +------------------+-----------------------+---------------------+
  3. | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | NOW()               |
  4. +------------------+-----------------------+---------------------+
  5. |       1501585038 |            1501585038 | 2017-08-01 18:57:18 |
  6. +------------------+-----------------------+---------------------+
  7. 1 row in set (0.00 sec)#返回UNIX格式时间即1970-01-01 00:00:00 之后的秒数
  8.  
  9. mysql> SELECT FROM_UNIXTIME(‘1466393937‘);  #将UNIX时间戳转换为普通格式时间
  10. +-----------------------------+
  11. | FROM_UNIXTIME(‘1466393937‘) |
  12. +-----------------------------+
  13. | 2016-06-20 11:38:57         |
  14. +-----------------------------+
  15. 1 row in set (0.00 sec)

返回UTC日期的函数UTC_DATE()

  1. mysql> SELECT UTC_DATE(),UTC_DATE()+0;
  2. +------------+--------------+
  3. | UTC_DATE() | UTC_DATE()+0 |
  4. +------------+--------------+
  5. | 2017-08-01 |     20170801 |
  6. +------------+--------------+
  7. 1 row in set (0.00 sec)

返回UTC时间的函数UTC_TIME()

  1. mysql> SELECT UTC_TIME(),UTC_TIME()+0;
  2. +------------+---------------+
  3. | UTC_TIME() | UTC_TIME()+0  |
  4. +------------+---------------+
  5. | 11:01:31   | 110131.000000 |
  6. +------------+---------------+
  7. 1 row in set (0.00 sec)

获取月份的函数MONTH(date)、MONTHNAME(date)

  1. mysql> SELECT MONTH(‘2017-07-13‘);
  2. +---------------------+
  3. | MONTH(‘2017-07-13‘) |
  4. +---------------------+
  5. |                   7 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT MONTHNAME(‘2017-07-13‘);
  9. +-------------------------+
  10. | MONTHNAME(‘2017-07-13‘) |
  11. +-------------------------+
  12. | July                    |
  13. +-------------------------+
  14. 1 row in set (0.00 sec)

获取星期的函数DAYNAME(d)、DAYOFWEEK(d)、WEEKDAY(d)

  1. mysql> SELECT DAYNAME(‘2017-07-13‘);  #返回指定日期的星期
  2. +-----------------------+
  3. | DAYNAME(‘2017-07-13‘) |
  4. +-----------------------+
  5. | Thursday              |
  6. +-----------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT DAYOFWEEK(‘2017-07-13‘);#返回d对应一周中的索引(1周日,2周一,...7周六)
  9. +-------------------------+
  10. | DAYOFWEEK(‘2017-07-13‘) |
  11. +-------------------------+
  12. |                       5 |
  13. +-------------------------+
  14. 1 row in set (0.00 sec)
  15. mysql> SELECT WEEKDAY(‘2017-07-13‘);#返回d对应一工作日的索引(0周日,1周一,...6周六)
  16. +-----------------------+
  17. | WEEKDAY(‘2017-07-13‘) |
  18. +-----------------------+
  19. |                     3 |
  20. +-----------------------+
  21. 1 row in set (0.00 sec)

获取星期数的函数WKKE(d)、WEEKOFYEAR(d)

  1. mysql> SELECT WEEK(‘2017-08-01‘),WEEK(‘2017-08-01‘,0),WEEK(‘2017-08-01‘,1);
  2. +--------------------+----------------------+----------------------+
  3. | WEEK(‘2017-08-01‘) | WEEK(‘2017-08-01‘,0) | WEEK(‘2017-08-01‘,1) |
  4. +--------------------+----------------------+----------------------+
  5. |                 31 |                   31 |                   31 |
  6. +--------------------+----------------------+----------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT WEEK(‘2017-08-01‘),WEEKOFYEAR(‘2017-08-01‘);
  9. +--------------------+--------------------------+
  10. | WEEK(‘2017-08-01‘) | WEEKOFYEAR(‘2017-08-01‘) |
  11. +--------------------+--------------------------+
  12. |                 31 |                       31 |
  13. +--------------------+--------------------------+
  14. 1 row in set (0.00 sec)

获取天数的函数DAYOFYEAR(d)、DAYOFMONTH(d)

  1. mysql> SELECT DAYOFYEAR(‘2017-08-01‘);
  2. +-------------------------+
  3. | DAYOFYEAR(‘2017-08-01‘) |
  4. +-------------------------+
  5. |                     213 |
  6. +-------------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT DAYOFMONTH(‘2017-08-01‘);
  9. +--------------------------+
  10. | DAYOFMONTH(‘2017-08-01‘) |
  11. +--------------------------+
  12. |                        1 |
  13. +--------------------------+
  14. 1 row in set (0.00 sec)

获取年份、季度、小时、分钟、秒钟的函数

  1. mysql> SELECT YEAR(‘11-02-03‘),YEAR(‘96-02-03‘);
  2. +------------------+------------------+
  3. | YEAR(‘11-02-03‘) | YEAR(‘96-02-03‘) |
  4. +------------------+------------------+
  5. |             2011 |             1996 |
  6. +------------------+------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT QUARTER(‘11-02-03‘),QUARTER(‘96-02-03‘);
  9. +---------------------+---------------------+
  10. | QUARTER(‘11-02-03‘) | QUARTER(‘96-02-03‘) |
  11. +---------------------+---------------------+
  12. |                   1 |                   1 |
  13. +---------------------+---------------------+
  14. 1 row in set (0.00 sec)
  15. mysql> SELECT HOUR(‘10:05:06‘),HOUR(‘15:06:56‘);    
  16. +------------------+------------------+
  17. | HOUR(‘10:05:06‘) | HOUR(‘15:06:56‘) |
  18. +------------------+------------------+
  19. |               10 |               15 |
  20. +------------------+------------------+
  21. 1 row in set (0.00 sec)
  22. mysql> SELECT MINUTE(‘10:05:06‘),MINUTE(‘15:06:56‘);
  23. +--------------------+--------------------+
  24. | MINUTE(‘10:05:06‘) | MINUTE(‘15:06:56‘) |
  25. +--------------------+--------------------+
  26. |                  5 |                  6 |
  27. +--------------------+--------------------+
  28. 1 row in set (0.00 sec)
  29. mysql> SELECT SECOND(‘10:05:06‘),SECOND(‘15:06:56‘);
  30. +--------------------+--------------------+
  31. | SECOND(‘10:05:06‘) | SECOND(‘15:06:56‘) |
  32. +--------------------+--------------------+
  33. |                  6 |                 56 |
  34. +--------------------+--------------------+
  35. 1 row in set (0.00 sec)

获取日期的指定值的函数EXTRACT(type FROM date)

  1. mysql> SELECT EXTRACT(YEAR FROM ‘2017-07-03‘) AS col1, 
  2.     -> EXTRACT(YEAR_MONTH FROM ‘2017-07-0301:02:03‘) AS col2, 
  3.     ->EXTRACT(DAY_MINUTE FROM ‘2017-07-03 01:02:03‘) AS col3;    
  4. +------+--------+-------+
  5. | col1 | col2   | col3  |
  6. +------+--------+-------+
  7. | 2017 | 201707 | 30102 |
  8. +------+--------+-------+
  9. 1 row in set (0.00 sec)

时间和秒钟转换的函数

  1. mysql> SELECT TIME_TO_SEC(‘23:23:00‘);
  2. +-------------------------+
  3. | TIME_TO_SEC(‘23:23:00‘) |
  4. +-------------------------+
  5. |                   84180 |
  6. +-------------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT SEC_TO_TIME(84180);     
  9. +--------------------+
  10. | SEC_TO_TIME(84180) |
  11. +--------------------+
  12. | 23:23:00           |
  13. +--------------------+
  14. 1 row in set (0.00 sec)

将日期格式化的函数DATE_FORMAT(date,formate)

说明符说明
%a工作日的缩写名称(Sun..Sat)
%b
月份的所写名称(Jan..Dec)
%c
月份数字形式(1,..12)
%D
带有英文后缀的该月份日期(1th,2nd,3rd,..)
%d
该月日期数字形式(01..31)
%e
该月日期数字形式(1,..31)
%f
微秒(000000..999999)
%H
以2位数表示24小时(00,..23)
%h,%I
以2位数表示12小时(01,..12)
%i
分钟数字形式(00..59)
%j
一年中的天数(001..366)
%k
以24小时表示时间
%l
以12小时表示时间
%M
月份名称(January..December)
%m
月份数字形式(01..12)
%p
上午AM或下午PM
%r
时间12小时制(小时hh:分钟mm:秒数ss 后加AM或PM)
%S,%s
以2位数形式表示秒(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位数形式表示年份
%%
‘%‘文字字符
  1. mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00‘,‘%W %M %Y‘) AS col1, 
  2.     -> DATE_FORMAT(‘1997-10-04 22:23:00‘,‘%D %y %a %d %m %b %j‘) AS col2;  
  3. +-----------------------+--------------------------+
  4. | col1                  | col2                     |
  5. +-----------------------+--------------------------+
  6. | Saturday October 1997 | 4th 97 Sat 04 10 Oct 277 |
  7. +-----------------------+--------------------------+
  8. 1 row in set (0.00 sec)

将时间格式化的函数TIME_FORMAT(time,formate)

  1. mysql> SELECT TIME_FORMAT(‘16:00:00‘,‘%H %k %h %I %l‘ );
  2. +-------------------------------------------+
  3. | TIME_FORMAT(‘16:00:00‘,‘%H %k %h %I %l‘ ) |
  4. +-------------------------------------------+
  5. | 16 16 04 04 4                             |
  6. +-------------------------------------------+
  7. 1 row in set (0.00 sec)


5.4、条件判断函数

IF(expr,v1,v2)

  1. mysql> SELECT IF(1>2,2,3),
  2.     -> IF(1<2,‘YES‘,‘NO‘),
  3.     -> IF(STRCMP(‘TEST‘,‘TEST1‘),‘NO‘,‘YES‘);
  4. +-------------+--------------------+---------------------------------------+
  5. | IF(1>2,2,3) | IF(1<2,‘YES‘,‘NO‘) | IF(STRCMP(‘TEST‘,‘TEST1‘),‘NO‘,‘YES‘) |
  6. +-------------+--------------------+---------------------------------------+
  7. |           3 | YES                | NO                                    |
  8. +-------------+--------------------+---------------------------------------+
  9. 1 row in set (0.00 sec)

IFNULL(v1,v2)

  1. mysql> SELECT IFNULL(1,2),IFNULL(NULL,10),IFNULL(1/0,‘WRONG‘);
  2. +-------------+-----------------+---------------------+
  3. | IFNULL(1,2) | IFNULL(NULL,10) | IFNULL(1/0,‘WRONG‘) |
  4. +-------------+-----------------+---------------------+
  5. |           1 |              10 | WRONG               |
  6. +-------------+-----------------+---------------------+
  7. 1 row in set (0.00 sec)


5.5、系统信息函数

获取MySQL版本号VERSION()

  1. mysql> SELECT VERSION();
  2. +------------+
  3. | VERSION()  |
  4. +------------+
  5. | 5.5.56-log |
  6. +------------+
  7. 1 row in set (0.00 sec)

获取连接数CONNECTION_ID()

  1. mysql> SELECT CONNECTION_ID();
  2. +-----------------+
  3. | CONNECTION_ID() |
  4. +-----------------+
  5. |               6 |
  6. +-----------------+
  7. 1 row in set (0.00 sec)

显示运行的线程

  1. mysql> SHOW PROCESSLIST; #显示运行的线程
  2. +----+------+-----------+------+---------+------+-------+------------------+
  3. | Id | User | Host      | db   | Command | Time | State | Info             |
  4. +----+------+-----------+------+---------+------+-------+------------------+
  5. |  6 | root | localhost | NULL | Query   |    0 | NULL  | SHOW PROCESSLIST |
  6. +----+------+-----------+------+---------+------+-------+------------------+
  7. 1 row in set (0.00 sec)

获取用户名

  1. mysql> SELECT USER(),CURRENT_USER(),SYSTEM_USER();
  2. +----------------+----------------+----------------+
  3. | USER()         | CURRENT_USER() | SYSTEM_USER()  |
  4. +----------------+----------------+----------------+
  5. | root@localhost | root@localhost | root@localhost |
  6. +----------------+----------------+----------------+
  7. 1 row in set (0.00 sec)

获取字符串的字符集和排序方式

  1. mysql> SELECT CHARSET(‘ABC‘), CHARSET(CONVERT(‘ABC‘ USING latin1)), CHARSET(VERSION());    
  2. +----------------+--------------------------------------+--------------------+
  3. | CHARSET(‘ABC‘) | CHARSET(CONVERT(‘ABC‘ USING latin1)) | CHARSET(VERSION()) |
  4. +----------------+--------------------------------------+--------------------+
  5. | utf8           | latin1                               | utf8               |
  6. +----------------+--------------------------------------+--------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT COLLATION(‘ABC‘),COLLATION(CONVERT(‘ABC‘ USING utf8));
  9. +------------------+--------------------------------------+
  10. | COLLATION(‘ABC‘) | COLLATION(CONVERT(‘ABC‘ USING utf8)) |
  11. +------------------+--------------------------------------+
  12. | utf8_general_ci  | utf8_general_ci                      |
  13. +------------------+--------------------------------------+
  14. 1 row in set (0.00 sec)


5.6、加密函数

加密函数PASSWORD(str)

  1. mysql> SELECT PASSWORD(‘NEWPD‘);
  2. +-------------------------------------------+
  3. | PASSWORD(‘NEWPD‘)                         |
  4. +-------------------------------------------+
  5. | *2AC78BA05A00714DDD77D040F46ABF58440382F2 |
  6. +-------------------------------------------+
  7. 1 row in set (0.00 sec)

加密函数MD5(str)

  1. mysql> SELECT MD5(‘NEWPD‘);     
  2. +----------------------------------+
  3. | MD5(‘NEWPD‘)                     |
  4. +----------------------------------+
  5. | 825ea75e25db1b886e20b14281447628 |
  6. +----------------------------------+
  7. 1 row in set (0.00 sec)

加密函数ENCODE(str,pswd_str)

  1. mysql> SELECT ENCODE(‘secret‘,‘cry‘),LENGTH(ENCODE(‘secret‘,‘cry‘));
  2. +------------------------+--------------------------------+
  3. | ENCODE(‘secret‘,‘cry‘) | LENGTH(ENCODE(‘secret‘,‘cry‘)) |
  4. +------------------------+--------------------------------+
  5. |                   |                              6 |
  6. +------------------------+--------------------------------+
  7. 1 row in set (0.00 sec)

解密函数DECODE(crypt_str,pswd_str)

  1. mysql> SELECT DECODE(ENCODE(‘secret‘,‘cry‘),‘cry‘);                 
  2. +--------------------------------------+
  3. | DECODE(ENCODE(‘secret‘,‘cry‘),‘cry‘) |
  4. +--------------------------------------+
  5. | secret                               |
  6. +--------------------------------------+
  7. 1 row in set (0.00 sec)

5.7、其他函数

格式化函数FORMAT(x,n)

  1. mysql> SELECT FORMAT(12332.12345,4),FORMAT(12332.1,4); 
  2. +-----------------------+-------------------+
  3. | FORMAT(12332.12345,4) | FORMAT(12332.1,4) |
  4. +-----------------------+-------------------+
  5. | 12,332.1235           | 12,332.1000       |
  6. +-----------------------+-------------------+
  7. 1 row in set (0.00 sec)

不同进制的数字进行转换的函数

  1. mysql> SELECT CONV(‘a‘,16,2),
  2.     -> CONV(15,10,2), 
  3.     -> CONV(15,10,8),  
  4.     -> CONV(15,10,16);  
  5. +----------------+---------------+---------------+----------------+
  6. | CONV(‘a‘,16,2) | CONV(15,10,2) | CONV(15,10,8) | CONV(15,10,16) |
  7. +----------------+---------------+---------------+----------------+
  8. | 1010           | 1111          | 17            | F              |
  9. +----------------+---------------+---------------+----------------+
  10. 1 row in set (0.00 sec)

IP地址与数字相互转换的函数

  1. mysql> SELECT INET_ATON(‘209.207.224.40‘);
  2. +-----------------------------+
  3. | INET_ATON(‘209.207.224.40‘) |
  4. +-----------------------------+
  5. |                  3520061480 |
  6. +-----------------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT INET_NTOA(3520064480);      
  9. +-----------------------+
  10. | INET_NTOA(3520064480) |
  11. +-----------------------+
  12. | 209.207.235.224       |
  13. +-----------------------+
  14. 1 row in set (0.00 sec)

重复执行指定操作的函数

  1. mysql> SELECT BENCHMARK(5000,PASSWORD(‘NEWPD‘));
  2. +-----------------------------------+
  3. | BENCHMARK(5000,PASSWORD(‘NEWPD‘)) |
  4. +-----------------------------------+
  5. |                                 0 |
  6. +-----------------------------------+
  7. 1 row in set (0.01 sec)

改变字符集的函数

  1. mysql> SELECT CHARSET(‘STRING‘),CHARSET(CONVERT(‘STRING‘ USING latin1));
  2. +-------------------+-----------------------------------------+
  3. | CHARSET(‘STRING‘) | CHARSET(CONVERT(‘STRING‘ USING latin1)) |
  4. +-------------------+-----------------------------------------+
  5. | utf8              | latin1                                  |
  6. +-------------------+-----------------------------------------+
  7. 1 row in set (0.00 sec)

改变数据类型的函数

  1. mysql> SELECT CAST(100 AS CHAR(2)),CONVERT(‘2010-10-01 12:12:12‘,TIME);
  2. +----------------------+-------------------------------------+
  3. | CAST(100 AS CHAR(2)) | CONVERT(‘2010-10-01 12:12:12‘,TIME) |
  4. +----------------------+-------------------------------------+
  5. | 10                   | 12:12:12                            |
  6. +----------------------+-------------------------------------+
  7. 1 row in set, 1 warning (0.00 sec)


本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1952779

五、MySQL函数

标签:mysql函数

人气教程排行