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、改变数据类型的函数

  • 相关阅读:
    VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行
    GDI+使用小记
    双缓冲技术绘图
    INI文件格式及其读写
    缩放图片并保存
    按值传递&&按引用传递&&按地址传递
    傻瓜式制作的U盘winpe(支持4G以上U盘)速度超快
    vi 命令大全
    fopen和open的区别
    Linux下Socket网络编程,文件传输,数据传输的C语言例子
  • 原文地址:https://www.cnblogs.com/hahayixiao/p/10252023.html
Copyright © 2011-2022 走看看