GreatSQL社区

搜索

KAiTO

0基础学MySQL数据库—从小白到大牛(6)单行函数

KAiTO 已有 342 次阅读2022-10-9 16:42 |个人分类:零基础学习数据库|系统分类:其他

一、函数的理解

1.1什么是函数

函数在计算机语言使用中贯穿始终,函数的作用是可以把我们经常使用的代码封装起来,需要的时候调用即可,这样==提高了代码的效率==而且==提高了可维护性==。在SQL中我们也可以使用函数对检索出来的数据进行函数操作,使用这些函数,可以极大的==提高用户对数据库的管理效率==
从函数的定义角度出发,函数可以分成==内置函数==,==自定义函数==

1.2不同的DBMS函数的差异

DBMS之间的差异很大,远大于同一个语言不同版本之间的差异。实际上很少的函数被DBMS同时支持的。大部分DBMS会有自己特定的函数,这意味着采用SQL函数的代码可移植性很差,因此在使用函数的时候需要特别注意。

1.3MySQL的内置函数及分类

MySQL提供了丰富的内置函数,从实现功能的角度来看可以分为:

  • 数值函数
  • 字符串函数
  • 日期和时间函数
  • 流程控制函数
  • 加密与解密函数
  • 获取MySQL信息函数
  • 聚合函数等 可以将这些丰富的内置函数再分为两类:单行函数和聚合函数(分组函数)

二、数值函数


函数用法
ABS(X)返回X的绝对值
SIGN(X)返回X的符号,正数返回1,复数返回-1,0返回0
PI()返回圆周率的值
CEIL(X)返回大于或等于某个值的最小整数
FLOOR(X)返回小于或等于某个值的最大整数
LEAST(X1,X2,X3)返回列表中的最小值
GREATEST(X1,X2,X3)返回列表中最大值
MOD(X,Y)返回X除以Y以后的余数
RAND()返回0~1的随机值
RAND(X)返回0~1的随机值,其中X的值作种子值,相同的X值会产生相同的随机数
ROUND(X)返回一个对X的值进行四舍五入后,最接近于X的整数
ROUND(X,Y)返回一个对X的值进行四舍五入后最接近X的值,并保留到小数点后面Y位
TRUNCATE(X,Y)返回数字X截断为Y位小数的结果
SQRT(X)返回X的平方根,当X的值为负数时,返回NULL
  • 简单举例
  • ABS(X)函数
  • CEIL(X)函数 FLOOR(X)函数,和CEIL用法刚好相反 MOD(X,Y)返回X/Y的模 和x%y的结果相同,如果被模数和模数任何一个为NULL结果都为NULL RAND()返回0~1的随机值 ROUND(X,Y)函数:返回参数X的四舍五入的有Y位小数的值 如果是整数,将会保留Y位数量0;如果不写y则默认y为0,即将x四舍五入后取整

TRUNCATE(X,Y)函数:返回数字X截断为Y位小数的结果
仅仅只是截断而不是四舍五入
在这里插入图片描述

三、字符串函数


函数功能
CONCAT(x1,x2,xn...)连接x1,x2,xn为一个字符串
INSERT(str,x,y,instr)将字符串从第X位置开始,Y个字符长的子串替换为字符串instr
LOWER(str)将字符串str中全转为小写
UPPER(str)将字符串str中全转为大写
LEFT(str,x)返回字符串str最左边的x个字符
RIGHT(str,x)返回字符串str最右边的x个字符
LPAD(str,n,pad)用字符串对左边填充,直到长度为N个字符长度
RPAD(str,n,pad)用字符串对右边填充,直到长度为N个字符长度
LTRIN(str)去掉字符串str左边空格
RTRIM(str)去掉字符串srt右边空格
REPEAT(str,x)返回str重复x次结果
REPLACE(str,a,b)用字符串b替换字符串str中出现所有的字符串a
STRCMP(x1,x2)比较字符串x1和x2
TRIM(str)去掉行尾和行头空格
SUBSTRING(str,y)返回从字符串str x 位置起y个字符长度的字串
  • 示范 |CONCAT(x1,x2,xn...)|连接x1,x2,xn为一个字符串| ==如果加入NULL的话结果都将会是NULL== |INSERT(str,x,y,instr)|将字符串从第X位置开始,Y个字符长的子串替换为字符串instr| |LOWER(str)|将字符串str中全转为小写| |UPPER(str)|将字符串str中全转为大写| |LEFT(str,x)|返回字符串str最左边的x个字符| |RIGHT(str,x)|返回字符串str最右边的x个字符| ==如果第二个参数是NULL则返回NULL== |LPAD(str,n,pad)|用字符串对左边填充,直到长度为N个字符长度| |RPAD(str,n,pad)|用字符串对右边填充,直到长度为N个字符长度| |LTRIN(str)|去掉字符串str左边空格| |RTRIM(str)|去掉字符串右边空格| |REPEAT(str,x)|返回str重复x次结果| |REPLACE(str,a,b)|用字符串b替换字符串str中出现所有的字符串a| 用2000替换掉字符串中的2001 |STRCMP(x1,x2)|比较字符串x1和x2| 如果S1比S2小返回-1.如果相等返回0,如果S1大于S2返回1 |TRIM(str)|去掉行尾和行头空格| |SUBSTRING(str,x,y)|返回从字符串str x 位置起y个字符长度的字串|

四、日期和时间函数


函数功能
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前的日期和时间
UNIX_TIMESTAMP(date)返回日期date的UNIX时间戳
FROM_UNIXTIME返回UNIX时间戳的日期值
WEEK(date)返回日期date为一年中的第几周
YEAR(date)返回日期date的年份
HOUR(time)返回time的小时值
MINUTE(time)返回time的分钟值
MONTHNAME(date,fmt)返回date的月份名
DATE_FORMAT(date,fmt)返回按字符串fmt格式化日期date值
DATE_ADD(date,INTERVAL expr type)返回一个日期或时间值加上一个时间间隔的时间值
DATEDIFF(expr,expr2)返回起始时间expr和结束时间expr2之间的天数
  • 举例 |CURDATE()|返回当前日期| |CURTIME()|返回当前时间| |NOW()|返回当前的日期和时间|


|UNIX_TIMESTAMP(date)|返回日期date的UNIX时间戳|

Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-4-17 06:53 , Processed in 0.012910 second(s), 8 queries , Redis On.
返回顶部