zoukankan      html  css  js  c++  java
  • MySQL函数 学习笔记

    MMySQL中的函数包括:数学函数,字符串函数,日期和时间函数,条件判断函数,系统信息函数和加密函数等其他函数。

    • 数学函数 主要用来处理数值数据,主要的数学函数有:绝对值函数,三角函数(包括正弦函数,余弦函数,正切函数,余切函数等),对数函数,随机函数等。有错误产生时,函数将会返回空值NULL。
      • 绝对值函数ABS(x)和返回圆周率的函数PI()如下图所示:                                                                                                                                                                                                                                                                                                                     
      • 平方根函数SQRT(x)和求余函数MOD(x,y)   返回非负数x的二次方根,和x被y除后的余数如下图所示:                                                                                                                                                                                                                                               

      •  获取证书的函数CEIL(x),CEILING(x)和FLOOR(x);前两个意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT,最后一个返回不大于x的最大整数值,返回值同样转化为一个BIGINT,如下图所示:                                                             

      •  获取随机数的函数RAND()和RAND(x),返回一个大于等于0小于等于1的随机值,指定x时,x被用作种子值,当x相同时,产生相同的随机值,用来产生重复序列。如下图所示:                                                                                                                                  

      •  函数 ROUND(x),ROUND(x,y)和TRUNCATE(x,y)第一个返回四舍五入后的整数,第二个返回最接近于x的数,保留小数点后面y位,若y为负数,则将保留x值到小数点左边y位,第三个返回被舍去至小数点后y位的数字x,若y为0,则不带小数。如y为负数则截去x小数点左起第y位开始后面所有低位的值。如下图所示:                                                                                                                                                                                                                                                                                                         

      •  符号函数SIGN(x),返回参数的符号,当x的值为负,零或正时返回结果依次为-1,0,1。如下图所示:                                                                                                                                                                                                                                                     

      •  幂运算函数POW(x,y),POWER(x,y)和EXP(x),前两个返回x的y次乘方的结果值。最后一个返回e的x乘方后的值。如下图所示:                                                                                                                                                                                               

      •  对数预算函数LOG(x)和LOG10(x),第一个返回x的自然对数,x相对于基数e的对数。第二个返回x的基数为10的对数。如下图所示:                                                                                                                                                                                             

      •  角度与弧度相互转换的函数RADIANS(x)和DEGREES(x),第一个将参数x由角度转化为弧度,第二个将参数x由弧度转化为角度。如下图所示:                                                                                                                                                                            

      •  正弦函数SIN(x)和反正弦函数ASIN(x),第一个返回x正弦,其中x为弧度值,第二个返回x的反正弦,即正弦为x的值。若x不在-1到1的范围内,则返回NULL。如下图所示:                                                                                                                                      

      •  余弦函数COS(x)和反余弦函数ACOS(x)第一个返回x的余弦,其中x为弧度值,第二个返回x的反余弦,即余弦是x的值。若x不在-1~1的范围内,则返回NULL。如下图所示:                                                                                                                                     

      •  正切函数,反正切函数和余切函数,TAN(x)返回x的正切,x为弧度值,ATAN(x)返回x的反正切,正切为x的值,COT(x)返回x的余切,如下图所示:                                                                                                                                                                

    • 字符串函数   计算字符串长度函数,字符串合并函数,字符串替换函数,字符串比较函数,查找指定字符串位置函数等。
      • 计算字符串字符数的函数和字符串长度的函数,CHAR_LENGTH(str)返回str的字符个数,一个多直接字符算作一个单字符。LENGTH(str)返回字符串长度,一个汉字是3个字节,一个数字或字母算一个字节。如下图所示:                                                   
      • 合并字符串函数 CONCAT(s1,s2,...),CONCAT_WS(x,s1,s2,...),第一个返回参数连接的结果,参数中有NULL则返回NULL,有二进制则返回二进制,第二个是加一个分割符,x就是这个分隔符,同时忽略NULL,如下图所示:                                                 
      • 替换字符串的函数INSERT(s1,x,len,s2),效果看图:其中第一个正常理解,第二个位置-1超出了字符串长度,则返回原字符,第三个替换长度100超出了原字符串长度,则截去后面所有字符。如下图:                                                                                         

      • 字母大小写转换函数,LOWER(str)和LCASE(str)把大写转换为小写,UPPER(str)和UCASE(str)把小写转换为大写。

      • 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n),第一个返回s左边n个字符,第二个返回字符串s右边n个字符。         
      • 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2),左填充和右填充,len小于s1时,只截取,不填充。 
      • 删除空格的函数LTRIM(s)RTRIM(s)和TRIM(s),第一个删除左侧空格,第二个删除右侧空格,  第三个删除两边空格。 
      • 删除指定字符串的函数TRIM(s1,FROM s)删除字符串,s中两端所有的子字符串s1,s1为可选项,不指定删除空格。
      • 重复生成字符串的函数REPEAT(s,n)返回n个s字符串组成的字符串,若n<=0返回空字符串。
      • 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2),第一个返回一个由n个空格组成的字符串,第二个,使用字符串s2代替字符串s中所有的字符串s1.
      • 比较字符串大小的函数STRCMP(s1,s2)结果相同返回0,s1小于s2返回-1,否则返回1.
      • 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len),从s中返回一个长度为len的字符串,其实位置为n,若n为负数,则从结尾倒数n个字符。    
      • 匹配子串开始位置的函数,LOCATE(str1,str)POSITION(str1 IN str)INSTR(str,str1)返回字符串str1 在str中开始的位置。
      • 字符串逆序的函数REVERSE(s)返回s的反转字符串。
      • 返回指定位置的字符串的函数,ELT(N,str1,str2,str3,...,strN)若N=1,则返回值为字符串1,若1N=2则返回字符串2,以此雷同。若N小于1活大于参数的数目,则返回NULL。
      • 返回指定字符串位置的函数FIEL(s,s1,s2,...)返回s在s1,s2第一次出现的位置,找不到时返回0,如果s为NULL,也返回0。
      • 返回子串位置的函数FIND_IN_SET(s1,s2),范围s1在s2中出现的位置。如s1不在s2中或s2位空,则返回0.任意一个参数为NULL,返回NULL,如果第一个参数包含一个逗号,则无法正常运行。
      • 选取字符串的函数MAKE_SET(x,s1,s2,...),返回由x的二进制数指定的相应位的字符串组成的字符串,s1对于鼻涕1,s2对应比特10,NULL不会被添加到结果中。
    • 日期和时间函数 
      • 获取当前日期的函数和获取当前时间的函数 CURDATE()和CURRENT_DATE()按照YYYY-MM-DD或YYYYMMDD的格式返回值。CURTIME和CURRENT_TIME()获取HH:MM:SS或HHMMSS格式的值,+0后为第二种格式。
      • 获取当前日期和时间的函数,CURRENT_TIMESTAMP(),LOCALTIME(),NOW()和SYSDATE()返回当前的日期和时间值YYYY-MM-DD HH:MM:SS YYYYMMDDHHMMSS
      • UNIX时间戳函数,UNIX_TIMESTAMP(date)无参数返回UNIX时间戳,FROM_UNIXTIME(date)把UNIX时间戳转化为普通格式的时间。
      • 返回UTC日期的函数和返回UTC时间的函数,UTC_DATE(),UTC_TIME()。
      • 获取月份的函数MONTH(date)和MONTHNAME(date)第一个返回数字,第二个返回英文单词。
      • 获取星期的函数DAYNAME(d),DAYOFWEEK(d)和WEEKDAY(d),第一个返回指定日期的工作日名称;第二个范围日期对应的周索引,1表示周日;第三个范围d对应的工作日索引,0表示周一,6表示周日。
      • 获取星期的函数WEEK(d)和WEEKOFYEAR(d),第一个计算d是一年中的第几周;第二个计算某一天位于一年中的第几周。
      • 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d),返回d是一年中的第几天;第二个返回d是一月中的第几天。
      • 获取年份,季度,小时,分钟和秒钟的函数。YEAR()年份,QUARTER(date)返回季度范围1-4,MINUTE(time)返回time对应的分钟是0~59,SECOND()返回指定的时间的秒。
      • 获取日期的指定值的函数EXTRACT(type FROM date),提取指定时间的,一部分,比如YEAR  YEAR_MONTH DAY_MINUTE。
      • 时间和秒钟转换的函数TIME_TO_SEC(time)时间转化为秒,SEC_TO_TIME()秒转化为时间。
      • 计算日期和时间的函数,DATE_ADD(),ADDDATE(),DATE_SUB(),SUBDATE(),ADDTIME(),SUBTIME()和DATE_DIFF()。
      • 将日期和时间格式化的函数DATE_FORMAT(date,format)。
    • 条件判断函数,控制流程函数。IF,IFNULL,CASE。
      • IF(expr,v1,v2)函数,expr为TRUE则返回v1否则返回v2。
      • IFNULL(v1,v2)函数,假如v1不为NULL,则范围v1,否则返回v2。
      • CASE函数, CASE expr WHEN v1 THEN r1[WHEN v2 THEN r2][ELSE rn] END.如果expr等于某个vn,则返回对应位置的THEN后面的结果,如果与所有值不相等,则返回ELSE后面的rn。
    • 系统信息函数,数据库的版本号,当前用户名和连接数,系统字符集,自动生成的ID值等。
      • 获取MySQL版本号,连接数和数据库名的函数, VERSION(),版本;CONNECTION_ID(),返回当前连接数;show processlist显示那些线程在运行,还可以查看链接状态,只能列出前100条,show full processlist可以列出所有的。DATEBASE()和SCHEMA()返回当前数据库名。使用utf8字符集。
      • 获取用户名的函数,USER(),CURRENT_USER,SYSTEM_USER和SESSION_USER(),获取当前登录用户名。
      • 获取字符串的字符集和排序方式的函数,CHARSET(str)返回str的字符集,COLLATION(str)返回字符串的排序方式。
      • 获取最后一个自动生成的ID值的函数, LAST_INSERT_ID()自动返回最有一个INSERT或UPDATE为AUTO_INCREMENT列设置的第一个发生的值。
    • 加密解密函数
      • 加密函数PASSWORD(str)从明文str计算,返回加密后的字符串。
      • 加密函数MD5(str)计算出一个MD5 128比他校验和,以32位16进制数字的二进制字符串形式返回。
      • 加密函数ENCODE(str,pswd_str)使用pswd_str作为密码,加密str,用DECONDE()解密。
      • 解密函数DECODE(crypt_str,pswd_str)使用pswd_str作为密码,解密加密字符串crypt_str,crypt_str是由ENCONDE()返回的字符串。
    • 其他函数
      • 格式化函数,FORMAT(x,n)将x格式化,保留小数点后n位。
      • 不同进制的数字进行转换的函数,CONV(N,from_base,to_base)进行不同进制数间的转换。
      • IP地址与数字相互转换的函数 INET_ATON(expr),点分十进制转换为数字。INET_NTOA(expr),数字转化为点分十进制。
      • 加锁函数和解锁函数,GET_LOCK(str,timeout)设法使用字符串str给定的名字得到一个锁,持续时间timeout秒。成功返回1,超时返回0,错误返回NULL。RELEASE_LOCK()或断开,解锁。IS_FREE_LOCK(str)检查str的锁是否可以使用。IS_USED_LOCK(str)加长str的锁是否在被使用。
      • 重复执行指定操作的函数,BENCHMARK(count,expr)重复count次执行表达式expr。
      • 改变字符集的函数,CONVERT(...USING...)用来在不通的字符集之间进行转换。
      • 改变数据类型的函数CAST(x, AS type)和CONVERT(x,type)将一个类型的值转换为另一个类型的值,可转换的有BINARY,CHAR(n)DATE,TIME,DATETIME,DECIMAL,SIGNED,UNSIGNED。
  • 相关阅读:
    【费用流】【CODEVS】1227 方格取数2
    【CODEVS】1034 家园
    【BZOJ】1066: [SCOI2007]蜥蜴
    【最大流】【CODEVS】1993 草地排水
    【HDU】2191 多重背包问题
    【TYVJ】1520 树的直径
    【BZOJ】1984 月下“毛景树”
    【BZOJ】1588: [HNOI2002]营业额统计
    【NOI】2004 郁闷的出纳员
    【POJ】2892 Tunnel Warfare
  • 原文地址:https://www.cnblogs.com/laiyuan/p/8310444.html
Copyright © 2011-2022 走看看