MySQL常用函数汇总

时间:2022-02-11 01:57:55

  MySQL中内置的函数不仅可以在SELECT 中使用, 还可以在INSERT , UPDATE 和 DELETE 等语句中使用.

  1. 数学类函数:

    CEIL(X), CEILIN(X)-----------进一取整
    FLOOR(X)-------------舍掉小数部分
    ROUND(x, y)----------四舍五入(保留y位小数)
    MOD(x,y)---------x除以y以后的余数
    ABS(x)-----------取x的绝对值
    POWER(x, y), POW(x, y)---------幂运算(x的y次幂)
    PI()------------圆周率
    RAND()或者RAND(X)------------0~1之间的随机数, x相同时返回的结果相同.
    SIGN(X)-------------得到数字符号
    EXP(X)-------------计算e的x次方;

    PI()----------返回圆周率, 默认7位

    TRUNCATE(X, Y)---------返回x,保留小数点后y位

    SQRT(x)----------返回非负数x的二次方根

    LOG(x)----------返回x的基数为2的对数

    LOG10(x)-----------返回x的基数为10的对数 

    RADIANS(x)----------将角度转换为弧度

    DEGREES(x)-----------将弧度转化为角度

    SIN(x)---------------返回x的正弦, 其中x在弧度中被给定

    ASIN(x)----------------返回x的反正弦, 若x不在-1到1之间的值, 则返回NULL

    (COS, ACOS, TAN, ATAN, COT等类似)

 

  2. 字符串函数

    CHAR_LENGTH(s)-----------返回字符串s的字符数

    LENGTH(s)------------------返回s的长度, 单位为字节, 一个多字节字符算作多个字节

    CONCAT(s1, s2, .....)----------------返回结果为连接参数(s1, s2, ....)产生的字符串, 若有一个参数为NULL, 

                    则返回NULL.如果所有参数均为非二进制, 则返回结果为非二进制,

                    若有一个参数为二进制, 则返回结果为二进制字符串.一个数字参数转化为

                    与之相等的二进制字符串格式, 若要避免这种情况, 可以使用显式类型CAST, 

                    如: SELECT CONCAT(CAST(int_col AS CHAR), char_col);

    CONCAT_WS(x, s1, s2, .....)------------同CONCAT()函数, 但是每个字符串要直接加上x

    INSERT(s1, x, len, s2)---------------将s2替换s1的x位置开始, 长度为len的字符串

    UPPER(s), UCASE(s)------------将s转换为大写

    LOWER(s), LCASE(s)-------------将s转换为小写

    LEFT(s, n)------------返回字符串s从左边开始的n个字符

    RIGHT(s, n)----------返回字符串s从右边开始的n个字符

    LPAD(s1, len, s2)------------返回字符串s1, 其左边用s2填补到len字符长度,

                假如s1的长度大于len, 则返回s1被缩短至len的长度

    RPAD(s1, len, s2)-------------返回字符串s1, 其右边被字符串s2填补至len字符长度, 

                假如s1的长度大于len, 则返回值被缩短到与len字符相等的长度

    LTRIM(s)----------返回字符串s, 开头空格字符被删除

    RTRIM(s)----------返回字符串s, 结尾空格字符被删除

    TRIM(s)----------去掉s开头和结尾的空格

    TRIM(s1 FROM s)----------去掉s中开头和结尾处的字符串s1

    REPEAT(s, n)-----------将字符串s重复n次

    SPACE(n)------------返回个空格

    REPLACE(s, s1, s2)---------用s2代替s中的s1

    STRCMP(s1, s2)----比较s1和s2

    SUBSTRING(s, n, len)---------获取字符串s中的第n个位置开始长度为len的字符串

    MID(s, n, len)--------------同SUBSTRING(s, n, len)

    LOCATE(s1, s), POSITION(s1 IN  s)---------------从字符串s中获取s1的开始位置

    INSTR(s, s1)-------------查找字符串s1在s中的位置, 返回首次出现的位置的索引值

    REVERSE(s)----------将字符串s反序

    ELT(n, s1, s2, .....)----------返回第n个字符串

    EXPORT_SET(bits, on, off[, separator [, number_of_bits ] ] )---------

        返回一个字符串, 生产规则如下:  针对bits的二进制格式, 如果其位为1, 则返回一个on值, 为0返回off值, 每个字符用separator

        进行分隔, 默认为" , "  .  number_of_bits指定可用的位数, 默认为64位.

        例如: 生成数字182的二进制(10110110)替换格式, 以" @ "作为分隔符, 设置有效位为6位, 其语句如下:

        SELECT EXPORT_SET(182, ‘Y‘, ‘N‘, ‘@‘, 6)       其返回结果为: [email protected]@[email protected]@[email protected]

    FIFLD(s, s1, s2, ............)-----------返回第一个与字符串s匹配的字符串的位置

    FIND_IN_SET(s1, s2)----------返回在字符串s2中与s1相匹配的字符串的位置

    MAKE_SET(x, s1, s2, ........)-------------按x的二进制数从s1, s2, .............sn中选取字符串

 

  3. 日期和时间函数

    CURDATE(), CURRENT_DATE()----------返回当前日期

    CURTIME(), CURRENT_DATE()-----------返回当前时间

    NOW(), CURRENT_TIMESTAMP(), LOCALTIME(), SYSDATE(), LOCALTIESTAMP()--------返回当前日期和时间

    UNIX_TIMESTAMP()----------以UNIX时间戳的形式返回当前时间, 

    UNIX_TIMESTAMP(d)---------将时间d以UNIX时间戳的形式返回

    FROM_UNIXTIME(d)----------把UNIX时间戳转化为普通时间格式返回

    UTC_DATE()-----------返回UTC(国际协调时间)日期

    UTC_TIME()------------返回UTC时间

    MONTH(d)------------返回日期d中的月份值, 范围为1-12

    MONTHNAME(d)--------返回日期d中的月份名称, 如: January, February.....

    DAYNAME(d)-----------返回日期d是星期几, 如Monday, Tuesday.....

    DAYOFWEEK(d)-----------返回日期d是星期几, 1表示星期日, 2表示星期一......

    WEEKDAY(d)-------------返回日期d是星期几, 0表示星期一, 1表示星期二......

    WEEK(d)----------计算日期d是本年的第几个星期, 范围是0~53

    WEEKOFYEAR(d)-----------计算日期 d 是本年的第几个星期,范围是 1~53

    DAYOFYEAR(d)-----------计算日期 d 是本年的第几天

    DAYOFMONTH(d)-----------计算日期 d 是本月的第几天

    YEAR(d)--------返回年份

    QUARTER(d)----------返回日期d是第几季节,返回 1 到 4

    HOUR(t)-----------返回 t 中的小时值

    MINUTE(t)----------返回 t 中的分钟值

    SECOND(t)------------返回 t 中的秒钟值

    EXTRACT(type FROM d)------------

      从日期 d 中获取指定的值,type 指定返回的值。 
      type可取值为: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, SECOND_MICROSECOND

      MINUTE_MICROSECOND, MINUTE_SECOND, HOUR_MICROSECOND, HOUR_SECOND, HOUR_MINUTE, DAY_MICROSECOND

      DAY_SECOND, DAY_MINUTE, DAY_HOUR, YEAR_MONTH

    

将时间 t 转换为秒