MySQL之函数

MySQL中提供了许多内置函数:

内置函数

一、数学函数

  ROUND(x, y)

    返回参数x的四舍五入的有y位小数的值

  RAND()

    返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。

二、聚合函数(常用于GROUP BY从句的SELECT查询中)

  AVG(col)返回指定列的平均值

  COUNT(col)返回指定列中非NULL值的个数

  MIN(col)返回指定列的最小值

  MAX(col)返回指定列的最大值

  SUM(col)返回指定列的所有值之和

  GROUP_CONCAT(col)返回由属于一组的列值连接组合而成的结果

扫描二维码关注公众号,回复: 1606354 查看本文章

三、字符串函数

  CHAR_LENGTH(str)

    返回值为字符串str的长度,长度的单位为字符。一个多字节字符算作一个单字符。

  CONCAT(str1,str2,...)

    字符串拼接

    如有任何一个参数为NULL,则返回值为NULL。

  CONCAT_WS(separator, str1, str2, ...)

    字符串拼接(自定义连接符)

    CONCAT_WS() 不会忽略任何空字符串。(然而会忽略所有的NULL)。

  CONV(N, from_base, to_base)

    进制转换

    例如:

      SELECT CONV('a', 16, 2);  表示将a由16进制转换为2进制字符串表示

  FORMAT(X, D)

    将数字X的格式写为‘#,###,###.##’,以四舍五入的方式保留小数点后D位,并将结果以字符串的形式返回。若D为0,则返回结果不带有小数点,或不含小数部分。

    例如:

      SELECT FORMAT(12332.1,4);结果为'12,332.1000'

  INSERT(str, pos, len, newstr)

    在str的指定位置插入字符串

      pos:要替换位置起始位置

      len:替换的长度

      newstr:新字符串

    特别的:

      如果pos超过原字符串长度,则返回原字符串

      如果len超过原字符串长度,则由新字符串完全替换

  INSERT(str, substr)

    返回字符串str中子字符串的第一个出现位置。

  LEFT(str, len)

    返回字符串str从开始的len位置的子序列字符。

  LOWER(str)

    变小写

  UPPER(str)

    变大写

  REVERSE(str)

    返回字符串str,顺序和字符顺序相反。

  SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)

    不带有len参数的格式从字符串str返回一个子字符串,起始于位置pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置pos。使用FROM的格式为标准SQL语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos字符,而不是字符串的开头位置。在以下格式的函数中可以对pos使用一个负值。

mysql> select substring('Quadratically',5);
+------------------------------+
| substring('Quadratically',5) |
+------------------------------+
| ratically                    |
+------------------------------+
1 row in set (0.00 sec)

mysql> select substring('foobarbar' from 4);
+-------------------------------+
| substring('foobarbar' from 4) |
+-------------------------------+
| barbar                        |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select substring('Quadratically',5,6)
    -> ;
+--------------------------------+
| substring('Quadratically',5,6) |
+--------------------------------+
| ratica                         |
+--------------------------------+
1 row in set (0.00 sec)

mysql> select substring('Sakila',-3);
+------------------------+
| substring('Sakila',-3) |
+------------------------+
| ila                    |
+------------------------+
1 row in set (0.00 sec)

mysql> select substring('Sakila',-5,3);
+--------------------------+
| substring('Sakila',-5,3) |
+--------------------------+
| aki                      |
+--------------------------+
1 row in set (0.00 sec)

mysql> select substring('Sakila' from -4 for 2);
+-----------------------------------+
| substring('Sakila' from -4 for 2) |
+-----------------------------------+
| ki                                |
+-----------------------------------+
1 row in set (0.00 sec)  

四、日期和时间函数

  CURDATE()或CURRENT_DATE()  返回当前的日期

  CURTIME()或CURRENT_TIME()  返回当前的时间

  DAYOFWEEK(date)  返回date所代表的一星期中的第几天(1-7)

  DAYOFMONTH(date)  返回date所代表的是一个月的第几天(1-31)

  DAYOFYEAR(date)  返回date是一年的第几天(1-366)

  DAYNAME(date)  返回date的星期名,如:select dayname(current_date);

  FROM_UNIXTIME(ts, fmt)  根据指定的fmt格式,格式化unix时间戳ts

   HOUR(time)  返回time的小时值(0~23)

  MINUTE(time)  返回time的分钟值(0~59)

  MONTH(time)  返回date的月份值(1~12)

猜你喜欢

转载自www.cnblogs.com/Black-rainbow/p/9188443.html