zoukankan      html  css  js  c++  java
  • MySQL:函数

    函数

    一、数学函数

    1、绝对值函数ABS(x):

    x为插入的数据,返回绝对值

    2、返回圆周率函数PI():

    无需插入数据,返回圆周率的值,默认为小数点后6位

    3、平方根函数SQRT(x):

    返回非负数的二次根

    4、求余函数MOD(x,y):

    返回x被y除后的余数,对小数点也有作用,返回除数运算后的精确除数

    5、获取整数函数GEIL(x)、GEILING(x)、FLOOR(x):

    (1)GEIL(x)和GEILING(x)意义相同,返回不小于x的最小整数值,返回值是一个bigint类型。
    (2)FLOOR(x)返回不大于x的最大整数值,返回值是一个bigint类型

    6、获取随机数函数RAND():无需加入数据,随机产生0到1之间的浮点值([0,1.0])

    注意:当输入数据x时,x相同时,产生的随机数相同
    实例:

    无数据x
    mysql> select rand(),rand();
    +--------------------+---------------------+
    | rand()             | rand()              |
    +--------------------+---------------------+
    | 0.6126245340449964 | 0.16587338705162832 |
    +--------------------+---------------------+
    有数据x
    mysql> select rand(),rand(1),rand(1),rand(2);
    +--------------------+---------------------+---------------------+--------------------+
    | rand()             | rand(1)             | rand(1)             | rand(2)            |
    +--------------------+---------------------+---------------------+--------------------+
    | 0.4598466888627472 | 0.40540353712197724 | 0.40540353712197724 | 0.6555866465490187 |
    +--------------------+---------------------+---------------------+--------------------+

    7、四舍五入函数ROUND(x)、ROUND(x,y)、TRUNCATE(x,y):

    (1)ROUND(x):对x值进行四舍五入。
    (2)ROUND(x,y):
    1)y大于0,进行四舍五入,其值保留到小数点后面的y位。
    2)y小于0,则保留x到小数点左边y位,并且保留到小数点左边的相应位数直接保存位0,不进行四舍五入。
    实例

    mysql> select round(1.38,1),round(1.38,0),round(211.38,-1),round(211.38,-2),round(1.38,-2);
    +---------------+---------------+------------------+------------------+----------------+
    | round(1.38,1) | round(1.38,0) | round(211.38,-1) | round(211.38,-2) | round(1.38,-2) |
    +---------------+---------------+------------------+------------------+----------------+
    |           1.4 |             1 |              210 |              200 |              0 |
    +---------------+---------------+------------------+------------------+----------------+

    (3)TRUNCATE(x,y):
    1)返回被舍弃至小数点后y位的数字x。
    2)若y的值为0,则结果不带有小数部分。
    3)若y是负数,则截去(归零)x小数点左起第y位开始后面所有低位的值
    实例

    mysql> select truncate(1.31,1),truncate(1.31,0),truncate(12.31,-1);
    +------------------+------------------+--------------------+
    | truncate(1.31,1) | truncate(1.31,0) | truncate(12.31,-1) |
    +------------------+------------------+--------------------+
    |              1.3 |                1 |                 10 |
    +------------------+------------------+--------------------+

    注意:round(x,y)和truncate(x,y)的区别
    round(x,y)取值时会进行四舍五入;
    Truncate(x,y)取值时是直接四舍五入。

    8、符号函数SIGN(x):x为负时返回-1,x为零时返回0,x为正时返回1。

    9、幂函数POW(x,y)、POWER(x,y)、EXP(x):

    1)POW(x,y)和POWER(x,y):返回x的y次乘方的结果值
    2)EXP(x):返回e的x乘方后的值

    10、对数函数LOG(x)、LOG10(x):

    1)LOG(x):返回x的自然对数,x相对于基数e的对数
    2)LOG10(x):返回x的基数为10的对数

    11、角度与弧度转化函RADIANS(x)、DEGREES(x):

    1)RADIANS(x):将参数x由角度转化为弧度
    2)DEGREES(x):将参数x由弧度转为角度

    12、正弦函数SIN(x):返回x的正弦,其中x为弧度值

    13、反正弦函数ASIN(x):返回x的反正弦,即正弦x的值,若x不在-1到1之间,则返回null。
    14、余数函数COS(x):返回x的余弦,其中x为弧度值
    15、反余数函数ACOS(x):返回x的反余弦,即余弦x的值,若x不在-1到1之间,则返回null。
    16、正切函数TAN(x):返回x的正切,其中x为弧度值
    17、反正切函数ATAN(x):返回x的反切弦,即正切x的值,
    18、余切函数COT(x):返回x的余切

    二、字符串函数

    1、计算字符串中的字符个数CHAR_LENGTH(‘str’):

    作用:返回字符串str的字符个数;
    注意:一个多字节字符算作一个单字符。
    实例

    mysql> select char_length('运'),char_length('yun'),char_length('123');
    +-------------------+--------------------+--------------------+
    | char_length('运') | char_length('yun') | char_length('123') |
    +-------------------+--------------------+--------------------+
    |                 1 |                  3 |                  3 |
    +-------------------+--------------------+--------------------+

    2、计算字符串中的字节长度LENGTH(‘str’):

    作用:返回字符串的字节长度;
    注意:使用utf8编码字符级时,一个汉字是3个字节,一个数字或字母算一个字节。
    实例

    mysql> select length('运'),length('yun'),length('123');
    +--------------+---------------+---------------+
    | length('运') | length('yun') | length('123') |
    +--------------+---------------+---------------+
    |            2 |             3 |             3 |
    +--------------+---------------+---------------+

    3、合并字符串函数CONCAT(‘s1’,’s2’…):CONCAT_WS(‘x’,’s1’,’s2’):

     (1)CONCAT(‘s1’,’s2’…):
    作用:返回结果为一个或多个字符串连接产生新的字符串。
    注意:
      1)如果任何一个原字符串为空值,则返回空值;
      2)如果任何一个原字符串为二进制,则返回二进制;
      3)如果任何一个原字符串为非二进制,则返回非二进制;
    实例

    mysql> select concat('my','sql'),concat('null','sql'),concat(null,'null');
    +--------------------+----------------------+---------------------+
    | concat('my','sql') | concat('null','sql') | concat(null,'null') |
    +--------------------+----------------------+---------------------+
    | mysql              | nullsql              | NULL                |
    +--------------------+----------------------+---------------------+

    (2)CONCAT_WS(‘x’,’s1’,’s2’):
       注意:
         1)x为分隔符,其位置在要连接的字符串之间;
         2)分隔符可以是字符串,也可以是其他符号;
         3)如果分隔符是空值,则返回空值;
         4)函数任何分隔符的原字符串后如果是的空值则返回空值。
    实例

     mysql> select concat_ws('*','my','sql'),concat_ws('null','my','sql'),concat('*','m',null,'y');
    +---------------------------+------------------------------+--------------------------+
    | concat_ws('*','my','sql') | concat_ws('null','my','sql') | concat('*','m',null,'y') |
    +---------------------------+------------------------------+--------------------------+
    | my*sql                    | mynullsql                    | NULL                     |
    +---------------------------+------------------------------+--------------------------+

    4、替换字符串函数INSERT(原字符串,开始位置,替换长度,用来替换的字符串):

    注意:
    1)如果开始位置大于原字符串的位置或者小于等于0,则返回原字符串;
    2)如果替换字符串超过原字符串长度,则替换x后面的所有字符串;
    3)四个参数有一个是空值,则都是空值。
    4)看例题,描述不出来。
    实例

    mysql> select insert('qwert',2,1,'asdf'),insert('qwert',2,10,'asdf'),insert('qwert',null,2,'asdf');
    +----------------------------+-----------------------------+-------------------------------+
    | insert('qwert',2,1,'asdf') | insert('qwert',2,10,'asdf') | insert('qwert',null,2,'asdf') |
    +----------------------------+-----------------------------+-------------------------------+
    | qasdfert                   | qasdf                       | NULL                          |
    +----------------------------+-----------------------------+-------------------------------+

    5、字母大小写转换函数

    1)转小写:LOWER(‘str’)和LCASE(‘str’):
    2)转大写:UPPER(‘str’)和UCASE(‘str’):

    6、获取指定长度的字符串的函数

    1)LEFT(‘str’,n):返回字符串str开始最左边n个字符;
    2)RIGHT(‘str’,n):返回字符串str开始最右边n个字符;

    7、填充字符串的函数

    (1)LPAD(str1,len,str2):
        1)作用:返回str1,其左边由字符串str2填补到len字符长度。
        2)注意:假如str1的长度大于len,则返回值被缩短到len字符。
    (2)RPAD(str1,len,str2):
        1)作用:返回str1,其右边由字符串str2填补到len字符长度。
        2)注意:假如str1的长度大于len,则返回值被缩短到len字符。

    8、删除空格的函数LTRIM():RTRIM():TRIM():

        LTRIM(str):字符串str只有左侧空格字符被删除
        RTRIM(str):字符串str只有右侧空格字符被删除
        TRIM(str):字符串str两侧空格字符被删除

    9、删除指定字符串的函数TRIM( str1 FROM str):

    作用:删除字符串str中两端所有的子字符串str1.str1为可选项,在未指定情况下删除空格。

    10、重复生成字符串的函数REPEAT(str,n):

    作用:返回一个由重复的字符串str组成的字符串,字符串str的数目等于n。若n<=0,则返回一个空字符串。若str或n为null,则返回null。

    11、空格函数SPACE(n):

    作用:返回一个由n个空格组成的字符串。
    【例】为便于显示使用concat()函数;

    mysql> select concat('(',space(3),')');
    +--------------------------+
    | concat('(',space(3),')') |
    +--------------------------+
    | (   )                    |
    +--------------------------+

    12、替换函数REPLACE(str,str1,str2):

    作用:使用字符串str2替换字符串str中的所有字符串str1;

    13、比较字符串大小的函数STRCMP(str1,str2):

    作用:str1与str2结果相同返回0;str1小于str2,返回-1;其他结果返回1;

    14、获取子字符串函数SUBSTRING(s,n,长度len):MID(s,n,长度len):

    作用:两者的作用差不多;
    如果len为正数,则从字符串str开始方向的起始位置n返回一个长度为len的字符;
    如果len为负数,则从字符串str结束方向的起始位置n返回一个长度为len的字符;
    实例

    mysql> select substring('hahayixiaorenshengrumeng',5,3),
        -> substring('hahayixiaorenshengrumeng',-5,3);
    +-------------------------------------------+--------------------------------------------+
    | substring('hahayixiaorenshengrumeng',5,3) | substring('hahayixiaorenshengrumeng',-5,3) |
    +-------------------------------------------+--------------------------------------------+
    | yix                                       | ume                                        |
    +-------------------------------------------+--------------------------------------------+

    注意:如果len为小于1 的数放回空值;

    15、匹配字符串开始位置的函数LOCATE(str1,str),POSITION(str in str),INSTR(str,str1):

    作用:三者的作用差不多;返回字符串str1在字符串str的位置

    16、字符串逆序的函数REVERSE(str):

    作用:将字符串str反转输出。

    17、返回指定位置的字符串函数ELT(N,str1,str2,str3,str4……):

    作用:若N=1,则返回字符串1;
    若N=2,则返回字符串2;
    如果N<1或者N>字符串的个数,则返回值时空值。

    18、返回指定字符串位置的函数FIELD(str,str1,str2,str3,str4……):

    作用:返回字符串str在列表中第一次出现的位置,
          找不到返回0
          Str为空值返回0,原因是空值不能和任何值进行比较;
    实例

    mysql> select field('ha','haa','aha','ha'),
        -> field('hhaa','haa','aha','ha'),
        -> field('','haa','aha','ha');
    +------------------------------+--------------------------------+----------------------------+
    | field('ha','haa','aha','ha') | field('hhaa','haa','aha','ha') | field('','haa','aha','ha') |
    +------------------------------+--------------------------------+----------------------------+
    |                            3 |                              0 |                          0 |
    +------------------------------+--------------------------------+----------------------------+

    19、返回字符串的位置FIND_IN_SET(str,str1):

    作用:返回字符串str在列表中第一次出现的位置,str1为由‘,’组成的列表;
          找不到返回0
          Str为空值返回0,原因是空值不能和任何值进行比较;
          如果str1开始有‘,’则报错;
    实例

    mysql> select find_in_set('ha','haa,aha,ha'),
        -> find_in_set('hhaa','haa,aha,ha'),
        -> find_in_set('','haa,aha,ha');
    +--------------------------------+----------------------------------+------------------------------+
    | find_in_set('ha','haa,aha,ha') | find_in_set('hhaa','haa,aha,ha') | find_in_set('','haa,aha,ha') |
    +--------------------------------+----------------------------------+------------------------------+
    |                              3 |                                0 |                            0 |
    +--------------------------------+----------------------------------+------------------------------+

    20、选取字符串的函数MAKE_SET(bite,str1,str2……):

    作用:返回一个设定值(含子字符串分隔字符串","字符),在设置位的相应位的字符串。str1对应于位0,str2到第1位,依此类推。在str1,str1有NULL值,...那么不添加到结果。
    实例

    mysql> SELECT MAKE_SET(1,'a','b','c') as a,
        -> MAKE_SET(1 | 4,'hello','nice','world') as b,
        -> MAKE_SET(1 | 4,'hello','nice',NULL,'world') as c,
        -> MAKE_SET(0,'a','b','c') as d;
    +---+-------------+-------+---+
    | a | b           | c     | d |
    +---+-------------+-------+---+
    | a | hello,world | hello |   |
    +---+-------------+-------+---+

     解释:
    SELECT MAKE_SET(1 | 4,'hello','nice','world');
    1|4是 1和4“或运算”,得0101,将这个二进数倒过来写,从左到右,由低位到高位写,为1010。
    对应字符串排列为
    hello,nice,world,对应着从低位到高位的1,2,4(只有3位),取出1对应的字符串
    所以,1(hello)0(nice)1(world)0,对应hello,word

    三、日期和时间函数

    1、获取当前日期的函数

    语法:select CURDATE()CURRENT_DATE()utc_date();
    注意:返回的日期格式为’YYYY-MM-DD’

    2、获取当前时间的函数

    语法:select CURTIME()CURRENT_TIME()utc_time();
    注意:返回的时间格式为’HH:MM:SS’

    3、获取当前日期和时间的函数

    语法:select CURRENT_TIMESTAMP()LOCALTIME()NOW()SYSDATE():
    注意:返回格式:’YYYY-MM-DD HH:MM:SS’

    4、UNIX时间戳函数

    获取月份的函数
    date的格式为YYYY-MM-DD或者YY-MM-DD
    语法:select MONTH(‘date’):返回阿拉伯数字月份
    语法:select MONTHHAME(‘date’):返回英文月份

    5、获取星期的函数

    语法:select DAYNAME(‘date’):返回英文的星期
    语法:select DAYOFWEEK(‘date’):返回阿拉伯数字(1是周日,2是周一,……,7是周六)
    语法:select WEEKDAY(‘date’):返回阿拉伯数字(0是周一,1是周一……,6是周六)

    6、获取星期数的函数

    语法:select WEEK(‘date’,Mode);
    语法:select WEEKOFYEAR(‘date’,Mode);
    Week函数中Mode参数取值
    Mode 一周的第一天 范围
    0或4 周日 0~53
    1或5 周日 0~53
    2或6 周日 1~53
    3或7 周日 1~53

    7、获取天数的函数

    语法:select DAYOFYEAR(‘date’):返回date一年中的第几天,范围是1~366。
    语法:select DAYOFMONTH(‘date’):返回date一个月中第几天,范围是1~31。

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

     ①获取年份
      语法:select YEAR(‘date’)返回相应的年份,‘00~69’返回‘2000~2069’;‘70~99’返回‘1970~1999’
     ②获取季度
      语法:select QUARTER(‘date’)返回相应的季度,返回值在1~4
     ③获取小时
      语法:select HOUR(‘date’),返回值在0~59.
     ④获取分钟
      语法:select MINUTE(‘date’),返回值在0~59.
     ⑤获取秒值
      语法:select SECOND(‘date’),返回值在0~59.

    9、截取日期的指定值的函数

    语法:EXTRACT(type FROM ‘date’)
    type:year截取年份                              type:month截取月份
    type:day截取天数                     type:year_month截取年份和月份                type:day_hour截取小时                         type:day_minute截取分钟
    type:day_second截取秒数                       type:hour_minute截取小时和分钟
    type:minute_second截取分秒                    type:hour_second截取时分秒

    10、时间和秒钟转化的函数

     时间转秒数
     语法:select time_to_sec(‘date’):
     秒数转时间:select sec_to_time(int);

    11、计算日期和时间的函数

    type:指定从起始日期添加或减去的时间间隔
    日期加运算:date_add(date,interval 

    12、日期和时间格式化函数Date_Format(date,format)

    四、条件判断函数

    1、IF函数
    2、CASE函数

    五、加密函数

    1、加密函数PASSWORD(str)
    2、加密函数MD5(str)
    3、加密函数ENCODE(str,pswd_str)
    4、解密函数DECODE(crypt_str,pswd_str)

    六、系统信息函数

    1、获取MySQL版本号;
    语法:select version();
    2、获取MySQL连接数
    语法:
    3、获取MySQL数据库名
    4、获取用户名函数
    5、获取字符串的字符集合和排序方式的函数
    6、获取最后一个自动生成的ID值的函数
     (1)一次插入一条记录
     (2)一次插入多个记录

    七、其他函数

    1、格式化函数FORMAT(x,n)

    FORMAT(x,n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串形式返回。
    若n为零或负数,则返回结果函数不含小数部分。
    【例】

    mysql> select format(2.34443,2),format(2.3432,0),format(2342.3432,-2);
    +-------------------+------------------+----------------------+
    | format(2.34443,2) | format(2.3432,0) | format(2342.3432,-2) |
    +-------------------+------------------+----------------------+
    | 2.34              | 2                | 2,342                |
    +-------------------+------------------+----------------------+

    2、不同进制的数字进行转换的函数CONV(N,原进制,显示进制)

    返回值为数值型的字符串表示,三个参数有一个为null,则返回值为null
    最小基数为2,最大基数为36;
    【例】

    mysql> select conv('a',16,2),conv('10',10,2);
    +----------------+-----------------+
    | conv('a',16,2) | conv('10',10,2) |
    +----------------+-----------------+
    | 1010           | 1010            |
    +----------------+-----------------+

    3、IP地址与数字相互转换的函数INET_ATON(expr),INET_NTOA(expr)

    INET_ATON(expr):将一个字符串的网络地址的点地址转化为一个代表该地址(4或8比特)数值的整数。 INET_NTOA(expr):将一个地址(4或8比特)数值的整数转换为一个字符串的网络地址的点地址;
    【例】

    INET_ATON(expr):
    mysql> select INET_ATON('211.52.175.185');
    +-----------------------------+
    | INET_ATON('211.52.175.185') |
    +-----------------------------+
    |                  3543445433 |
    +-----------------------------+
    INET_NTOA(expr):
    mysql> select INET_NTOA(3543445433);
    +-----------------------+
    | INET_NTOA(3543445433) |
    +-----------------------+
    | 211.52.175.185        |
    +-----------------------+

    注意:两者的计算方式
    211*(256^3)+52*(256^2)+175*(256^1)+185=3543445433;
    4、加锁函数和解锁函数
    5、重复执行指定操作的函数
    6、改变字符集的函数
    7、改变数据类型的函数

  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/hahayixiao/p/10252023.html
Copyright © 2011-2022 走看看